package com.glsc.ngateway.common.api.common.enums;

import com.google.common.collect.ImmutableList;

import java.text.SimpleDateFormat;
import java.time.format.DateTimeFormatter;
import java.util.*;

public class DictConstant {


    public final static DateTimeFormatter FORMAT_TIME_DEFAULT2=DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");

    public final static DateTimeFormatter FORMAT_DATE_DEFAULT2=DateTimeFormatter.ofPattern("yyyy-MM-dd");

    public static final Integer DELETED = 1; //已删除
    public static final Integer NO_DELETED = 0; //未删除

    /**
     * 所有字典项标识
     */
    public static final String ALL_DICT_CODE_LIST = "ALL_DICT_CODE_LIST";//未删除状态;


    /**
     * 操作来源
     */
    public static final String OP_SOURCE_WEB = "web";
    public static final String OP_SOURCE_FILE = "文件导入";

    /**
     * 操作类型
     */
    public static final String OP_ACTION_ADD = "新增";
    public static final String OP_ACTION_UPDATE = "修改";
    public static final String OP_ACTION_ADDUPDATE = "新增/覆盖";
    public static final String OP_ACTION_DELETE = "删除";
    public static final String OP_ACTION_AUDIT = "审核";
    public static final String OP_ACTION_APP = "自动匹配";
    public static final String OP_ACTION_MPP = "手动匹配";

    /**
     * 产品状态: am_prod_manage_status
     */
    public static final String PROD_STATUS_BEFORE_REGISTER = "BEFORE_REGISTER";//备案前;
//    public static final String PROD_STATUS_BEFORE_INVEST ="BEFORE_INVEST";// "备案后至投资前";此状态直接转为存续期，20210420，顾佳骅
    public static final String PROD_STATUS_INVESTING = "INVESTING";//""存续期";
    public static final String PROD_STATUS_AFTER_CLEAR ="AFTER_CLEAR";// "产品清算结束后";
    public static final Integer ADD = 0;
    public static final Integer UPDATE = 1;
    public static final Integer DELETE = 2;

    public static final String ADD_STRING = "add";
    public static final String UPDATE_STRING = "update";
    public static final String DELETE_STRING = "delete";
    public static final String DELETE_BATCH_STRING = "batch_delete";

    public static final String CMDB_CHANGE_LOG = "CMDB_CHANGE_LOG";
    public static final String CMDB_CPU_DETAIL = "CMDB_CPU_DETAIL";
    public static final String CMDB_CPU_STANDARD = "CMDB_CPU_STANDARD";
    public static final String CMDB_CPU_STANDARD_DEVICE_STANDARD_RELATE = "CMDB_CPU_STANDARD_DEVICE_STANDARD_RELATE";
    public static final String CMDB_DEVICE_DETAIL = "CMDB_DEVICE_DETAIL";
    public static final String CMDB_DEVICE_STANDARD = "CMDB_DEVICE_STANDARD";
    public static final String CMDB_DEVICE_FLOW_STANDARD = "CMDB_DEVICE_FLOW_STANDARD";
    public static final String CMDB_DEVICE_TYPE = "CMDB_DEVICE_TYPE";
    public static final String CMDB_DICT = "CMDB_DICT";
    public static final String CMDB_DICT_VALUE = "CMDB_DICT_VALUE";
    public static final String CMDB_DISK_DETAIL = "CMDB_DISK_DETAIL";
    public static final String CMDB_DISK_STANDARD = "CMDB_DISK_STANDARD";
    public static final String CMDB_DISK_STANDARD_DEVICE_STANDARD_RELATE = "CMDB_DISK_STANDARD_DEVICE_STANDARD_RELATE";
    public static final String CMDB_MACHINE_ROOM = "CMDB_MACHINE_ROOM";
    public static final String CMDB_STS = "CMDB_STS";
    public static final String CMDB_MACHINE_CABINET = "CMDB_MACHINE_CABINET";
    public static final String CMDB_MACHINE_CABINET_U = "CMDB_MACHINE_CABINET_U";
    public static final String CMDB_MEMORY_DETAIL = "CMDB_MEMORY_DETAIL";
    public static final String CMDB_MEMORY_STANDARD = "CMDB_MEMORY_STANDARD";
    public static final String CMDB_MEMORY_STANDARD_DEVICE_STANDARD_RELATE = "CMDB_MEMORY_STANDARD_DEVICE_STANDARD_RELATE";
    public static final String CMDB_PART_DETAIL = "CMDB_PART_DETAIL";
    public static final String CMDB_PART_STANDARD = "CMDB_PART_STANDARD";
    public static final String CMDB_PART_STANDARD_DEVICE_STANDARD_RELATE = "CMDB_PART_STANDARD_DEVICE_STANDARD_RELATE";
    public static final String CMDB_PART_TYPE = "CMDB_PART_TYPE";
    public static final String CMDB_TABLE_SEQUENCE = "CMDB_TABLE_SEQUENCE";

    public static final String CMDB_CONFIRM = "CMDB_CONFIRM";//标记是审核确认的步骤
    public static final String CMDB_WEB = "CMDB_WEB";//标记是审核确认的步骤
    public static final String CMDB_CREATE = "CMDB_CREATE";//标记是审核确认的步骤

    public static final Integer NO_DELETE = 0;
    public static final String PROJECT_MANAGER = "1";
    public static final String MEMBER_STATUS_NORMAL = "1";
    public static final String CONTRACT_VENDOR = "1";
    public static final String CONTRACT_SYSTEM = "2";
    public static final String LEADER_ROOM = "总裁室";
    public static final String LEVEL_ONE_DEPARTMENT = "一级部门";
    public static final String LEVEL_TWO_DEPARTMENT = "二级部门";
    public static final Integer EVENT_FORCE_CLOSE = 2; //强制结束
    public static final Integer EVENT_NORMAL_CLOSE = 1; //正常结束
    public static final int NO_CLOSE = 0;//未关闭的提醒事件

    public static final Integer LIFE_CYCLE_IN = 0;//库存
    public static final Integer LIFE_CYCLE_ON_LINE = 1;//在线
    public static final Integer LIFE_CYCLE_OUT = 6;//设备已报废
    public static final Integer PART_LIFE_CYCLE_IN = 0;//库存
    public static final Integer PART_LIFE_CYCLE_ASSGIN = 1;//已分配
    public static final Integer PART_LIFE_CYCLE_OUT = 2;//配件已报废
    public static final String STATUS0 = "0";
    public static final String ROLE_OPEARATOR = "ROLE_OPEARATOR";//运营维护账号

    public static final String WORKFLOW_NODE_SKIP = "0";//跳过节点
    public static final String WORKFLOW_NODE_NO_SKIP = "1";//跳过节点
    public static final String TODO_LINK = "http://zy.glsc.com.cn/gateway/workflowMgr/taskTodoQuery";
    public static final String ISSUE_LINK = "http://10.197.49.32/glsc/issues/table";

    public static Map<String,Boolean> PROD_STATUS_MAP =new HashMap();

    //事务事件流程审核人 张文
    public static String eventManageAccount = "zhangw";

    static{
        PROD_STATUS_MAP.put(PROD_STATUS_BEFORE_REGISTER,true);
//        PROD_STATUS_MAP.put(PROD_STATUS_BEFORE_INVEST,true);
        PROD_STATUS_MAP.put(PROD_STATUS_INVESTING,true);
        PROD_STATUS_MAP.put(PROD_STATUS_AFTER_CLEAR,true);
    }

    /**
     * 产品创设状态: am_prod_create_status
     */
    public static final String PROD_CREATE_STATUS_GOING = "2";//创设中;
    public static final String PROD_CREATE_STATUS_FINISH = "4";//创设完成;

    /**
     * 是、否状态: yesno
     */
    public static final String NO = "N";//未删除状态;
    public static final String YES = "Y";// "已删除状态";

    /**
     * 激活状态：Y激活，N否
     */
    public static final String ACTIVATED_NO = "N";//未激活状态;
    public static final String ACTIVATED_YES = "Y";// "已激活状态";


    public static Map<String, String> YES_NO_MAP = new HashMap<>();

    static {
        YES_NO_MAP.put(NO, "否");
        YES_NO_MAP.put(YES, "是");
    }

    public static final String STOP = "S"; //openRule开放期状态-中止待用(规则起始日未定)

    /**
     * 0/1 true false: am_yesno_01
     */
    public static final String NO_0 = "0";//false
    public static final String YES_1 = "1";//true
    public static final Integer NO_INT_0 = 0;//false
    public static final Integer YES_INT_1 = 1;//true


    /**
     * 投资类型，InvestBook类使用
     */
//    public static final String INVEST_TYPE_INITIAL = "INITIAL";//初始投资;
    public static final String INVEST_TYPE_ADD = "ADD";//追加信息;
    public static final String INVEST_TYPE_WITHDRAWAL = "WITHDRAWAL";//提取信息;
    public static final String INVEST_TYPE_INVEST = "INVEST";//投资信息;
    public static Map<String,Boolean> INVEST_TYPE_MAP =new HashMap();
    static{
        INVEST_TYPE_MAP.put(INVEST_TYPE_ADD,true);
        INVEST_TYPE_MAP.put(INVEST_TYPE_WITHDRAWAL,true);
        INVEST_TYPE_MAP.put(INVEST_TYPE_INVEST,true);
    }

    public static final String CARRY_CAL_TYPE_DAY_1 = "1";//固定日期计提
    public static final String CARRY_CAL_TYPE_WITHDRAWAL_2 = "2";//赎回时计提;

    public static final String CARRY_APPLY_DAY_TYPE_1000 = "1000";//1000  到期日
    public static final String CARRY_APPLY_DAY_TYPE_1001 = "1001";//提前到期日	1001
    public static final String CARRY_APPLY_DAY_TYPE_1002 = "1002";//展期到期日	1002
    public static final String CARRY_APPLY_DAY_TYPE_1003 = "1003";//1003  委托资产提取日
    public static final String CARRY_APPLY_DAY_TYPE_1004 = "1004";//收益分配日	1004
    public static final String CARRY_APPLY_DAY_TYPE_1005 = "1005";//业绩报酬固定提取日	1005


    /**
     * 适当性记录状态:  1编辑中，2已提交待审核，3审核完毕,4审核不通过
     */
    public static final String ELIG_STATUS_EDIT = "1";//填写中;
    public static final String ELIG_STATUS_SUBMIT = "2";//已提交待审核;
    public static final String ELIG_STATUS_AUDIT_PASS = "3";//审核通过;
    public static final String ELIG_STATUS_AUDIT_REJECT = "4";//审核退回，这时相当于进入再次可以编辑的状态；
    public static Map<String,Boolean> ELIG_STATUS_MAP =new HashMap();
    static{
        ELIG_STATUS_MAP.put(ELIG_STATUS_EDIT,true);
        ELIG_STATUS_MAP.put(ELIG_STATUS_SUBMIT,true);
        ELIG_STATUS_MAP.put(ELIG_STATUS_AUDIT_PASS,true);
        ELIG_STATUS_MAP.put(ELIG_STATUS_AUDIT_REJECT,true);
    }

    public static final String CONFIG_ELIG_AUDIT_TEAM="ELIG_AUDIT_TEAM";

    /**
     * 用户分组
     */
    public static final String PRODUCT_RELATION_AM_STAFF = "AM_STAFF";//资产管理部所有员工
    public static final String PRODUCT_RELATION_ALL_STAFF = "ALL_STAFF";//投资经理;
    public static final String PRODUCT_RELATION_PRODUCT_MANAGER = "PRODUCT_MANAGER";//产品经理;
    public static final String PRODUCT_RELATION_INVEST_MANAGER = "INVEST_MANAGER";//投资经理;
    public static final String PRODUCT_RELATION_INVEST_ASSISTANT = "INVEST_ASSISTANT";   //投资助理
    public static final String PRODUCT_RELATION_PERSON_IN_CHARGE = "PERSON_IN_CHARGE";//总负责人;
    public static final String PRODUCT_RELATION_INVEST_OPERATOR = "INVEST_OPERATOR";//投资经办;
    public static final String PRODUCT_RELATION_MARKET_MANAGER = "MARKET_MANAGER";//市场经理
    public static final String PRODUCT_RELATION_MARKET_OPERATOR = "MARKET_OPERATOR";//市场经办;
    public static final String PRODUCT_RELATION_OPERATION_MANAGER = "OPERATION_MANAGER";//运营经理;
    public static final String PRODUCT_RELATION_CONTRACTOR = "CONTRACTOR";//承揽人
    public static final String PRODUCT_RELATION_CONTRACT_DEPARTMENT = "CONTRACT_DEPARTMENT";//承揽人部门
    public static final String PRODUCT_RELATION_REVENUE_DEPARTMENT = "REVENUE_DEPARTMENT";//收入归属部门
    public static final String PRODUCT_RELATION_SCALE_DEPARTMENT = "SCALE_DEPARTMENT";//规模归属部门
    public static final String PRODUCT_RELATION_OPERATION_STAFF = "OPERATION_STAFF";//运管部所有员工
    public static final String PRODUCT_RELATION_AM_OPERATION_IT_STAFF = "AM_OPERATION_IT_STAFF";//资管部、运管部、信息技术部员工

    public static final String PRODUCT_RELATION_ID_CERTIFICATE_TYPE = "ID_CERTIFICATE_TYPE";//身份证明材料
    public static final String PRODUCT_RELATION_OTHER_ID_CERTIFICATE_TYPE = "OTHER_ID_CERTIFICATE_TYPE";//其它身份证明材料
    public static Map<String, Boolean> PRODUCT_RELATION_TYPE_MAP = new HashMap();

    static {
        PRODUCT_RELATION_TYPE_MAP.put(PRODUCT_RELATION_INVEST_MANAGER, true);
        PRODUCT_RELATION_TYPE_MAP.put(PRODUCT_RELATION_PERSON_IN_CHARGE, true);
        PRODUCT_RELATION_TYPE_MAP.put(PRODUCT_RELATION_INVEST_OPERATOR, true);
        PRODUCT_RELATION_TYPE_MAP.put(PRODUCT_RELATION_MARKET_MANAGER, true);
        PRODUCT_RELATION_TYPE_MAP.put(PRODUCT_RELATION_CONTRACTOR, true);
        PRODUCT_RELATION_TYPE_MAP.put(PRODUCT_RELATION_CONTRACT_DEPARTMENT, true);
        PRODUCT_RELATION_TYPE_MAP.put(PRODUCT_RELATION_REVENUE_DEPARTMENT, true);
        PRODUCT_RELATION_TYPE_MAP.put(PRODUCT_RELATION_SCALE_DEPARTMENT, true);

        PRODUCT_RELATION_TYPE_MAP.put(PRODUCT_RELATION_ID_CERTIFICATE_TYPE, true);
        PRODUCT_RELATION_TYPE_MAP.put(PRODUCT_RELATION_OTHER_ID_CERTIFICATE_TYPE, true);
    }

//    public static final String ASSET_MANAGEMENT_DEPARTMENT = "资产管理部";//资产管理部


    /**
     * 产品属性字段的可编辑、可读查看权限
     */
    public static final String PRODUCT_FILED_AUTH_READ = "read";//读;
    public static final String PRODUCT_FILED_AUTH_EDIT = "edit";//读;

    public static final String PRODUCT_INVEST_STRATEGY_OTHER = "99";//投资策略为其它;
    public static final String PRODUCT_INVEST_STRATEGY_ABS = "25";//投资策略为ABS;

    public static final String PRODUCT_INVEST_TYPE_ABS = "50";//产品投资类型ABS

    /**
     * 适当性记录状态:  1编辑中，2已提交待审核，3审核完毕,4审核不通过
     */
    @Deprecated
    public static final String PRODUCT_RELATION_STATUS_EDIT = "1";//填写中; 暂时无用

    public static final String PRODUCT_RELATION_STATUS_SUBMIT = "2";//已提交待确认;
    public static final String PRODUCT_RELATION_STATUS_CONFIRM_PASS = "3";//确认通过;
    public static final String PRODUCT_RELATION_STATUS_CONFIRM_REJECT = "4";//确认驳回，这时相当于进入再次可以编辑的状态；
    public static Map<String,Boolean> PRODUCT_RELATION_STATUS_MAP =new HashMap();
    static{
        PRODUCT_RELATION_STATUS_MAP.put(PRODUCT_RELATION_STATUS_EDIT,true);
        PRODUCT_RELATION_STATUS_MAP.put(PRODUCT_RELATION_STATUS_SUBMIT,true);
        PRODUCT_RELATION_STATUS_MAP.put(PRODUCT_RELATION_STATUS_CONFIRM_PASS,true);
        PRODUCT_RELATION_STATUS_MAP.put(PRODUCT_RELATION_STATUS_CONFIRM_REJECT,true);
    }

    /**
     * 批量作业ID
     */
    public static final String JOB_NEXT_DAY_DATA_INIT = "NEXT_DAY_DATA_INIT";//下一个交易日前数据初始化;
    public static final String JOB_REMIN_REGISTER_EXPIRE = "REMIN_REGISTER_EXPIRE";//备案注册日期过期提醒;
    public static final String JOB_REMIN_CLOSE_ACCOUNT = "REMIN_CLOSE_ACCOUNT";//账户注销提醒;
    public static final String JOB_REMIN_SYSTEM_LICENSE_EXPIRE = "REMIN_SYSTEM_LICENSE_EXPIRE";//资管系统License过期提醒;
    public static final String JOB_CARRY_DAY_CAL = "CARRY_DAY_CAL";//资管系统License过期提醒;
    public static final String JOB_END_STAT = "JOB_END_STAT";//检查其他作业状态;
    public static final String JOB_REMIN_FEE_CARRY_TODO = "REMIN_FEE_CARRY_TODO";//两费及业务报酬规则记录信息形成待办任务;
    public static final String JOB_REMIN_FEE_CARRY_TODO_ADD = "REMIN_FEE_CARRY_TODO_ADD";//业务报酬支付提醒计提完成规则记录形成待办任务;
    public static final String JOB_REMIND_INVEST_WORKFLOW_CAPITAL = "REMIND_INVEST_WORKFLOW_CAPITAL";//每日4:30检查资金岗待办再次提醒;
    public static final String JOB_REMIND_INVEST_WORKFLOW_DEADLINE = "REMIND_INVEST_WORKFLOW_DEADLINE";//每日4:00检查资金岗待办再次提醒;
    public static final String JOB_REMIND_INVEST_WORKFLOW_TODAY = "REMIND_INVEST_WORKFLOW_TODAY";//追加提取当日早上提醒待办事项;
    public static final String JOB_SYNC_OA_PRODUCT = "JOB_SYNC_OA_PRODUCT";//同步OA产品;
    public static final String JOB_PROD_INVEST_ASSISTANT_IN_VALID = "JOB_PROD_INVEST_ASSISTANT_IN_VALID";//产品投资助理授权期限已过置为状态失效;
    public static final String JOB_PROD_OA_WORKFLOW_STATUS_PENDING = "JOB_PROD_OA_WORKFLOW_STATUS_PENDING";//产品OA流程评审状态评审中处理;
    public static final String JOB_REMIND_FEE_TODO_DURAL = "JOB_REMIND_FEE_TODO_DURAL";//两费及业绩报酬待办提醒日提醒;
    public static final String JOB_REMIND_FEE_TODO_EXPIRED = "JOB_REMIND_FEE_TODO_EXPIRED";//两费及业绩报酬待办最后一日提醒;
    public static final String JOB_TODO_SEND_MAIL_REMIND = "JOB_TODO_SEND_MAIL_REMIND";//待办任务发送邮件提醒;
    public static final String JOB_NEW_STOCK_OFFLINE_SALES_MAIL_REMIND = "JOB_NEW_STOCK_OFFLINE_SALES_MAIL_REMIND";//新股网下配售到期日提前一个月邮件提醒;
    public static final String JOB_REMIND_OPENDAY_MONTH_TODO = "REMIND_OPENDAY_MONTH_TODO";//开放期确认年度月度任务提醒;
    public static final String JOB_REMIND_OPENDAY_TA = "REMIND_OPENDAY_TA";//产品开放状态TA提醒;
    public static final String JOB_SYNC_OA_REPORT_STATUS = "SYNC_OA_REPORT_STATUS";//同步OA定期报告状态;
    public static final String JOB_SYNC_PROD_STATUS_UF20 = "SYNC_PROD_STATUS_UF20";//同步柜台;
    public static final String JOB_REMIND_OPENDAY_INVEST_MANAGER = "REMIND_OPENDAY_INVEST_MANAGER";//产品开放期审批投资经理提醒;
    public static final String JOB_RAISE_START_DATE_PROCESS_AUDIT_PASS = "RAISE_START_DATE_PROCESS_AUDIT_PASS";//新设流程自动校验通过确认募集期开始日;
    public static final String JOB_RAISE_END_DATE_PROCESS_AUDIT_PASS = "RAISE_END_DATE_PROCESS_AUDIT_PASS";//新设流程自动校验通过确认募集期结束日;
    public static final String JOB_RAISE_START_DATE_PROCESS_TASK_REMIND = "RAISE_START_DATE_PROCESS_TASK_REMIND";//新设流程校验募集期开始日并提醒前序任务节点;
    public static final String JOB_COP_BATCH_QUERY_POLLING = "COP_BATCH_QUERY_POLLING";//COP系统批量轮询产品明细和余额;
    public static final String JOB_COP_TRADE_FLOW_BACK_UP = "COP_TRADE_FLOW_BACK_UP";//COP系统每日批量轮询产品明细结果刷到本地库;
    public static final String JOB_CHECK_PROD_CENTER_TEMPLATE_UPDATE = "CHECK_PROD_CENTER_TEMPLATE_UPDATE";//校验产品中心模板修改;
    public static final String JOB_DIGITAL_KEY_EXPIRE_DATE_REMIND = "DIGITAL_KEY_EXPIRE_DATE_REMIND";//数字证书有效期提醒;
    public static final String DIGITAL_KEY_ALL_LIST = "DIGITAL_KEY_ALL_LIST";//数字证书盘点;
    public static final String DIGITAL_KEY_UPDATE_DEPT = "DIGITAL_KEY_UPDATE_DEPT";//数字证书更新托管人数字证书;
    public static final String NOTIFY_EVENT_IMPROVE_END = "NOTIFY_EVENT_IMPROVE_END";//提醒改善流程结束;
    public static final String READ_SH_TRADE_SEAT_EXCEL_INFO = "READ_SH_TRADE_SEAT_EXCEL_INFO";//读取上交所交易单元excel信息;
    public static final String READ_SZ_TRADE_SEAT_EXCEL_INFO = "READ_SZ_TRADE_SEAT_EXCEL_INFO";//读取深交所交易单元excel信息;
    public static final String UPDATE_TRADE_SEAT_INFO_DATE_LINE = "UPDATE_TRADE_SEAT_INFO_DATE_LINE";//将不属于本次计费周期的交易单元费用信息状态修改为过期;
    public static final String UPDATE_TRADE_SEAT_RENT_BY_HISTORY = "UPDATE_TRADE_SEAT_RENT_BY_HISTORY";//通过交易单元历史更新台账
    public static final String CHECK_SYNC_LOG = "CHECK_SYNC_LOG";//oaflow侧同步移动审批;
    public static final String SYNC_TODO_FLOW = "SYNC_TODO_FLOW";//platform侧同步移动审批;
    public static final String SYNC_XIR_TRADE = "SYNC_XIR_TRADE";//oaflow同步衡泰流程;
    public static final String NOTIFY_VENDOR = "NOTIFY_VENDOR";//通知供应商;
    public static final String VENDOR_CREATE_TASK = "VENDOR_CREATE_TASK";//创建供应商评价任务;

    public static final String JOB_DOC_COLLECTION_REMIND = "DOC_COLLECTION_REMIND";//档案催收提醒;

    public static final String JOB_SYNC_PROD_STATUS_UF20_MORNING = "SYNC_PROD_STATUS_UF20_MORNING";//早间同步柜台;
    public static final String JOB_SYNC_PROD_STATUS_UF20_AFTER_NOON = "SYNC_PROD_STATUS_UF20_AFTER_NOON";//收盘后同步柜台;

    /*批量作业每日执行模式，每日执行还是每个交易日执行*/
    public static final String JOB_DAY_RUN_MODE_EVERYDAY = "EVERYDAY";//作业每个自然日执行
    public static final String JOB_DAY_RUN_MODE_BIZ_DAY = "BIZDAY";//作业每个交易日执行
    public static final String JOB_DAY_RUN_MODE_RERUN_HOUR = "RERUN_HOUR";//按小时可重跑

    /**
     * 批量作业状态
     */
    public static final String JOB_STATUS_INIT = "INIT";//初始化状态;
    public static final String JOB_STATUS_DOING = "DOING";//处理中;
    public static final String JOB_STATUS_FAIL = "FAIL";//处理失败;
    public static final String JOB_STATUS_SUCCESS = "SUCCESS";//处理成功;

    /**
     * 待办事项类型
     */
    public static final String TODO_TYPE_ELIG = "ELIG";//适当性反洗钱待办;
    public static final String TODO_TYPE_RESPONSIBLE = "RESPONSIBLE";//责任人信息确认待办;
    public static final String TODO_TYPE_RESPONSIBLE_REJECT = "RESPONSIBLE_REJECT";//责任人信息确认退回;
    public static final String TODO_TYPE_INVEST_WORKFLOW_ADD = "INVEST_WORKFLOW_ADD";//追加提取工作流任务;
    public static final String TODO_TYPE_INVEST_WORKFLOW_PREADD = "INVEST_WORKFLOW_PREADD";//追加提取工作流任务;
    public static final String TODO_TYPE_INVEST_WORKFLOW_WITHDRAWAL = "INVEST_WORKFLOW_WITHDRAWAL";//追加提取工作流任务;
    public static final String TODO_TYPE_ACCOUNT_OPEN_WORKFLOW_NODE = "ACCOUNT_OPEN_WORKFLOW_NODE";//账户开立节点任务;
    public static final String TODO_TYPE_ACCOUNT_SELECT_ACCOUNT_TYPE = "ACCOUNT_SELECT_ACCOUNT_TYPE";//已选交易品种，需选择具体账户
    public static final String TODO_TYPE_FEE_CARRY_RULE_MAINTAIN = "FEE_CARRY_RULE_MAINTAIN";//两费及业绩报酬规则维护
    public static final String TODO_TYPE_FEE_REMIND = "FEE_REMIND";//两费待办
    public static final String TODO_TYPE_CARRY_REMIND = "CARRY_REMIND";//业绩报酬待办
    public static final String TODO_TYPE_KEY_CLAUSE = "KEY_CLAUSE";//合同条款待办;
    public static final String TODO_TYPE_FEE_INACCOUNT_MAINTAIN = "FEE_INACCOUNT_MAINTAIN";//费用收款账户维护代办;
    public static final String TODO_TYPE_OPEN_RULE_MAINTAIN = "OPEN_RULE_MAINTAIN";//开放期规则维护
    public static final String TODO_TYPE_OPEN_DAY_INVEST_MANAGER_CONFIRM = "OPEN_DAY_INVEST_MANAGER_CONFIRM";//开放期投资经理及后续确认
    public static final String TODO_TYPE_OPEN_DAY_CONFIRM_FLOW = "OPEN_DAY_CONFIRM_FLOW";//开放期确认流程
    public static final String TODO_TYPE_ABS_TRANSFER_FLOW = "ABS_TRANSFER_FLOW";//ABS划款流程
    public static final String TODO_TYPE_OPEN_DAY_MONTH_TODO_FIRST = "OPEN_DAY_MONTH_TODO_FIRST";//开放期年度任务
    public static final String TODO_TYPE_OPEN_DAY_MONTH_TODO_SECOND = "OPEN_DAY_MONTH_TODO_SECOND";//开放期月度任务
    public static final String TODO_TYPE_OPEN_DAY_MONTH_TODO_FIRST_AND_SECOND = "OPEN_DAY_MONTH_TODO_FIRST_AND_SECOND";//开放期年度和月度任务
    public static final String TODO_TYPE_OPEN_DAY_MONTH_TODO_TEMP = "OPEN_DAY_MONTH_TODO_TEMP";//临时开放任务
    public static final String TODO_TYPE_FLOWABLE_PROD_STARTUP_PROCESS = "FLOWABLE_PROD_STARTUP_PROCESS";//产品新设流程待办;
    public static final String TODO_TYPE_FUND_STREET_ACCOUNT = "FUND_STREET_ACCOUNT";//金融一街账户维护待办;

    /**
     * 待读事项类型
     */
    public static final String TOVIEW_TYPE_FLOWABLE_PROD_STARTUP_PROCESS_COPY = "FLOWABLE_PROD_STARTUP_PROCESS_COPY";//新设流程抄送待读;


    /**
     * 邮件发送状态
     */
    public static final String MAIL_STATUS_TODO = "1";//待发送状态;
    public static final String MAIL_STATUS_SUCCESS = "2";//已发送;
    public static final String MAIL_STATUS_FAIL = "3";//发送失败;

    /**
     * 托管账户状态code
     */
    public static final String AM_CUSTODY_ACCOUNT_STATUS = "am_custody_account_status";
    /**
     * 银行账户属性code
     */
    public static final String AM_DEPOSIT_ACCOUNT_PROP = "am_deposit_account_prop";
    /**
     * 银行账户状态code
     */
    public static final String AM_DEPOSIT_ACCOUNT_STATUS = "am_deposit_account_status";

    /**
     * 结算模式 code
     */
    public static final String AM_SETTLE_MODE = "am_settle_mode";

    /**
     * 结算模式 code
     */
    public static final String AM_SETTLE_MODE_BROKER = "1";
    public static final String AM_SETTLE_MODE_BANK = "2";


    /**
     * 是否code
     */
    public static final String YESNO ="yesno";

    /**
     * 是否code
     */
    public static final String DEFAULT_INPUT_NO_CONTENT ="未填写";


    /**
     * 身份证明材料code
     */
    public static final String AM_ID_CERTIFICATE_TYPE = "am_id_certificate_type";

    /**
     * 其他身份证明材料code
     */
    public static final String AM_OTHER_ID_CERTIFICATE_TYPE = "am_other_id_certificate_type";

    /**
     * 账户信息一对多类型
     */
    public static final String ACCOUNT_TYPE_DEPOSIT = "DEPOSIT";

    public static final String ACCOUNT_TYPE_PF = "PF";

    public static final String ACCOUNT_TYPE_PE = "PE";


    /**
     * 产品配置方式，字典： am_tag_select_prod_method
     */
    public static final String TAG_SELECT_PROD_METHOD_MANUAL = "1"; //手动配置
    public static final String TAG_SELECT_PROD_METHOD_AUTO = "2"; //自动配置

    /**
     * 申赎流水数据来源
     */
    public static final String INVEST_DATA_SOURCE_1 = "1";//手工录入;
    public static final String INVEST_DATA_SOURCE_2_FROM_VALUE_SYSTEM = "2";//采集自估值系统;
    public static final String INVEST_DATA_SOURCE_3_FROM_WORKFLOW = "3";//来自追加提取工作流


    /**
     * 账户开立
     */
    public static final String ACCOUNT_OPEN_GROUP = "am_account_group";
    public static final String DICT_ACCOUNT_GROUP_INTERBANK = "interbankBond";
    public static final String DICT_ACCOUNT_GROUP_FUTURE = "future";



    public static final String DICT_CODE_REPORT_TYPE = "am_report_type";

    public static final String DICT_CODE_DISCLOSURE_TYPE = "am_disclosure_type";



    /**
     * 账户开立
     */
    public static final String DICT_CODE_TRADE_ACCOUNT_CLASS = "am_trade_account_class";

    /**
     * 具体流程节点状态
     */
    public static final String WORKFLOW_NODE_STATE_PENDING = "1"; //待处理

    public static final String WORKFLOW_NODE_STATE_PROCESSED = "2"; //已处理

    public static final String WORKFLOW_NODE_STATE_CANCEL = "3"; //取消，这里未启用该状态，取消直接设置为待处理

    public static final String WORKFLOW_NODE_STATE_SKIP = "SKIP"; //跳过，不会存到数据库表中的临时状态，跳过状态数据库最终保存2-已处理状态

    public static final String WORKFLOW_NODE_STATE_UPDATE_REMARK = "UPDATE_REMARK"; //更新备注，


    /**
     * 流程节点处理类型
     */
    public static final String WORKFLOW_NODE_DOTYPE_ALL_DOWN = "1"; //全部依赖节点处理完毕

    public static final String WORKFLOW_NODE_DOTYPE_ANY_DOWN = "2"; //任意一个节点处理完毕

    public static final String WORKFLOW_NODE_DOTYPE_ANY_DENY = "3"; //一票否决


    /**
     * 账户开立交易市场
     */
    public static final String ACCOUNT_OPEN_TYPE_FUTURE = "future"; //期货





    /**
     * 产品档案来源，字典： am_prod_doc_source
     */
    public static final String PROD_DOC_SOURCE_ACCOUNT_CUSTODY = "10000"; //账户开立回执
    public static final String PROD_DOC_SOURCE_INVEST_WORKFLOW= "20000"; //追加提取申请工作流
    public static final String PROD_DOC_SOURCE_CARRY_REMIND_FLOW= "30001"; //业绩报酬提醒工作流
    public static final String PROD_DOC_SOURCE_OPEN_DAY_CONFIRM = "30002"; //开放期确认流程
    public static final String PROD_DOC_SOURCE_FLOWABLE = "40001"; //flowable流程类附件，创设、投顾等所有flowable均使用此类型
    public static final String PROD_DOC_SOURCE_STANDARD_PARAM = "50001"; //产品新设，标准参数文档类型



    /**
     * 投资追加提取工作流类型，字典： am_invest_workflow_type
     */
    public static final String DICT_CODE_INVEST_WORKFLOW_TYPE = "am_invest_workflow_type";

    public static final String INVEST_WORKFLOW_TYPE_ADD = "1"; //追加
    public static final String INVEST_WORKFLOW_TYPE_CAPITAL_TRANSFER = "2"; //划款
    public static final String INVEST_WORKFLOW_TYPE_ADD_PRE = "3"; //预追加
    public static Map<String, Boolean> INVEST_WORKFLOW_TYPE_MAP = new HashMap();

    static {
        INVEST_WORKFLOW_TYPE_MAP.put(INVEST_WORKFLOW_TYPE_ADD, true);
        INVEST_WORKFLOW_TYPE_MAP.put(INVEST_WORKFLOW_TYPE_CAPITAL_TRANSFER, true);
        INVEST_WORKFLOW_TYPE_MAP.put(INVEST_WORKFLOW_TYPE_ADD_PRE, true);
    }

    /**
     * 账户开立状态:am_account_open_status
     */
    public static final String ACCOUNT_OPEN_STATUS_NO = "10"; //未申请开立
    public static final String ACCOUNT_OPEN_STATUS_OPENING = "20"; //开立中
    public static final String ACCOUNT_OPEN_STATUS_FINISHED = "30"; //开立完成

    /**
     * 账户开立的账管角色，
     */
    public static final String ACCOUNT_ROLE_MANAGER = "account_role_management";
    public static final String ACCOUNT_ROLE_COMPLIANCE = "am_role_zichanguanlibuheguigang";
    public static final String ACCOUNT_ROLE_CUSTODY = "account_role_custody";//托管户经办人
    public static final String ACCOUNT_ROLE_CAPITAL= "account_role_cash";//资金账户经办人
    public static final String ACCOUNT_ROLE_STOCK= "account_role_stock";//证券账户经办人
    public static final String ACCOUNT_ROLE_INTERBANK = "account_role_interbank";
    public static final String ACCOUNT_ROLE_O32_CREDIT_ACCOUNT = "account_role_o32_credit_account_remind";//	两融资金账户-O32系统维护-清算-通知人
    public static final String ACCOUNT_ROLE_O32_IT = "account_role_o32_it";//  O32系统维护-技术
    public static final String ACCOUNT_ROLE_O32_SETTLE = "account_role_o32_settle";//O32系统维护-清算（运管清算组）
    public static final String ACCOUNT_ROLE_CIBMTS = "account_role_cibmts";//CIBMTS账户维护人
    public static final String ACCOUNT_ROLE_BEIJINSUO = "account_role_beijinsuo";//北金所
    public static final String ACCOUNT_ROLE_RISK_CONTROL = "account_role_risk_control";//风控
    public static final String ACCOUNT_ROLE_COP = "account_role_cop";//cop系统维护，业务
    public static final String ACCOUNT_ROLE_FUTURE = "account_role_futures";//期货账户经办人
    public static final String ACCOUNT_ROLE_FUND_AGENCY = "account_role_fund";//基金账户经办人（代销）
    public static final String ACCOUNT_ROLE_FUND_DIRECT = "account_role_zhixiaojijinzhanghukaihu";//基金账户经办人（直销）

    public static final String ACCOUNT_ROLE_MISSION_ADJUST = "account_role_yongjinfeilvdiaozhengtixing";//佣金费率调整提醒，目前给金融一街同事发送
    public static final String ACCOUNT_ROLE_CASH = "account_role_cash";//资金账户经办人

    /**
     * 账户权限业务类型: am_workflow_accounttype_kind
     */
    public static final String ACCOUNT_TYPE_KIND_ACCOUNT = "1"; //账户
    public static final String ACCOUNT_TYPE_KIND_AUTH = "2"; //权限

    /**
     * 账户开立账户类型编码
     */
    public static final String ACCOUNT_TYPE_CODE_FUND_DIRECT = "ACCOUNT_TYPE_FUND_DIRECT"; //直销基金账户
    public static final String ACCOUNT_TYPE_CODE_FUT_OTHER = "OtherFutAccount"; //其它期货，账户编码

    /*
     * 账户开立，流程节点完成，自动设置产品账户维护状态字段列表
     * 用途：当账户开立流程完成时，如果依赖完成的字段为是否完成银证签约等，系统自动在节点完成时，将产品的该字段设置为：是或者完成的状态
     * */
    public static final Set<String> ACCOUNT_OPEN_NODE_AUTO_FIELD_SET = new HashSet<>();

    static {
        ACCOUNT_OPEN_NODE_AUTO_FIELD_SET.add("shClearCIBMTSMaintenance");
        ACCOUNT_OPEN_NODE_AUTO_FIELD_SET.add("shClearCustodyAccountMaintenance");
        ACCOUNT_OPEN_NODE_AUTO_FIELD_SET.add("shClearMaintainToBeiJin");
        ACCOUNT_OPEN_NODE_AUTO_FIELD_SET.add("bondCIBMTSMaintenance");
        ACCOUNT_OPEN_NODE_AUTO_FIELD_SET.add("bondCustodyAccountMaintenance");
//        ACCOUNT_OPEN_NODE_AUTO_FIELD_SET.add("futureBankFutureTransferSign");
        ACCOUNT_OPEN_NODE_AUTO_FIELD_SET.add("thirdPartyDepositorySign");//三方存管是否签约
        ACCOUNT_OPEN_NODE_AUTO_FIELD_SET.add("creditThirdPartyDepositorySign");
        ACCOUNT_OPEN_NODE_AUTO_FIELD_SET.add("securityAccountAddAuthDate");//股卡下挂，日期自动填充
        ACCOUNT_OPEN_NODE_AUTO_FIELD_SET.add("creditAuthForGem");//两融创业板权限
        ACCOUNT_OPEN_NODE_AUTO_FIELD_SET.add("creditAuthForStarMarket");//两融科创板权限
    }

    /**
     * 产品档案类别，字典： am_prod_doc_type
     */
    public static final String DICT_CODE_PROD_DOC_TYPE = "am_prod_doc_type"; //产品档案类别dict_code
    public static final String PROD_DOC_TYPE_CUSTODY = "20000"; //托管账户开立回执
    public static final String PROD_DOC_TYPE_SECURITY_ACCOUNT = "20001"; //普通证券账户开立回执
    public static final String PROD_DOC_TYPE_BROKER_ACCOUNT = "20002"; //普通资金账户开立回执
    public static final String PROD_DOC_TYPE_CREDIT_ACCOUNT = "20003"; //两融资金&证券账户回执
    public static final String PROD_DOC_TYPE_FUTURE_ACCOUNT= "20010"; //期货账户信息表
    public static final String PROD_DOC_TYPE_FUTURE_PARAM= "20011";//期货交易参数表
    public static final String PROD_DOC_TYPE_PROD_REGISTER="20020";//产品备案函
    public static final String PROD_DOC_TYPE_INVEST_CONTRACT_1= "30001"; //追加提取单章版通知书
    public static final String PROD_DOC_TYPE_INVEST_CONTRACT_2= "30002"; //追加提取双章版通知书
    public static final String PROD_DOC_TYPE_INVEST_CONTRACT_3= "30003"; //追加提取三章版通知书
    public static final String PROD_DOC_TYPE_INVEST_CONTRACT_4= "30004"; //资金到账/确认划款凭证
    public static final String PROD_DOC_TYPE_PUB_FUND_ACCOUNT= "20040";//公募基金开户回执
    public static final String PROD_DOC_TYPE_INTERBANK_PBOC= "20050";//银行间人行备案通知
    public static final String PROD_DOC_TYPE_INTERBANK_BOND= "20051";//银行间中债开立回执
    public static final String PROD_DOC_TYPE_INTERBANK_SH_CLEAR= "20052";//银行间上清开立回执
    public static final String PROD_DOC_TYPE_NEW_STOCK_OFFLINE_SALES= "20053";//新股网下配售开立回执

    public static final String PROD_DOC_TYPE_CUSTODY_MODIFY = "20100"; //托管账户变更回执
    public static final String PROD_DOC_TYPE_SECURITY_ACCOUNT_MODIFY = "20101"; //证券账户变更回执
    public static final String PROD_DOC_TYPE_BROKER_ACCOUNT_MODIFY = "20102"; //资金账户变更回执
    public static final String PROD_DOC_TYPE_CREDIT_ACCOUNT_MODIFY = "20103"; //信用账户变更回执
    public static final String PROD_DOC_TYPE_INTERBANK_PBOC_MODIFY = "20104"; //银行间人行备案通知变更回执
    public static final String PROD_DOC_TYPE_INTERBANK_BOND_MODIFY = "20105"; //银行间中债变更回执
    public static final String PROD_DOC_TYPE_INTERBANK_SH_CLEAR_MODIFY = "20106"; //银行间上清变更回执
    public static final String PROD_DOC_TYPE_INTERBANK_FUTURE_ACCOUNT_MODIFY = "20107"; //期货账户变更回执
    public static final String PROD_DOC_TYPE_INTERBANK_FUTURE_PARAM_MODIFY = "20108"; //期货交易参数变更回执
    public static final String PROD_DOC_TYPE_INTERBANK_PUB_FUND_ACCOUNT_MODIFY = "20109"; //公募基金账户变更回执

    public static final String PROD_DOC_TYPE_CUSTODY_CANCEL = "20200"; //托管账户注销回执
    public static final String PROD_DOC_TYPE_SECURITY_ACCOUNT_CANCEL = "20201"; //证券账户注销回执
    public static final String PROD_DOC_TYPE_BROKER_ACCOUNT_CANCEL = "20202"; //资金账户注销回执
    public static final String PROD_DOC_TYPE_CREDIT_ACCOUNT_CANCEL = "20203"; //信用账户注销回执
    public static final String PROD_DOC_TYPE_INTERBANK_PBOC_CANCEL = "20204"; //银行间人行备案通知注销回执
    public static final String PROD_DOC_TYPE_INTERBANK_BOND_CANCEL = "20205"; //银行间中债注销回执
    public static final String PROD_DOC_TYPE_INTERBANK_SH_CLEAR_CANCEL = "20206"; //银行间上清注销回执
    public static final String PROD_DOC_TYPE_INTERBANK_FUTURE_ACCOUNT_CANCEL = "20207"; //期货账户注销回执
    public static final String PROD_DOC_TYPE_INTERBANK_FUTURE_PARAM_CANCEL = "20208"; //期货交易参数注销回执
    public static final String PROD_DOC_TYPE_INTERBANK_PUB_FUND_ACCOUNT_CANCEL = "20209"; //公募基金账户注销回执

    public static final String PROD_DOC_TYPE_INTERBANK_BOND_PAUSE = "20210"; //银行间中债暂停回执

    public static final String PROD_DOC_TYPE_CUSTODY_FEE_ACCOUNT = "20230"; //托管费账户附件

    public static final String PROD_DOC_TYPE_MANAGE_FEE_ACCOUNT = "20236"; //管理费账户附件

    public static final String PROD_DOC_TYPE_CARRY = "30010";//业绩报酬相关附件
    public static final String PROD_DOC_TYPE_MANAGE_FEE = "30011";//管理人费用划付相关附件
    public static final String PROD_DOC_TYPE_CUSTODY_FEE = "30012";//托管费划付相关附件
    public static final String PROD_DOC_TYPE_CAPITAL_TRANS = "30013";//银证转账相关附件
    public static final String PROD_DOC_TYPE_DIVIDEND = "30014";//收益分配相关附件
    public static final String PROD_DOC_TYPE_CAPITAL_FUTURE = "30015";//银期转账相关附件

    public static final String PROD_DOC_TYPE_BUY_BASE_ASSET = "20300";//购买基础资产账户相关附件
    public static final String PROD_DOC_TYPE_CHINA_CLEAR_ASSIGN = "20301";//中登指定账户相关附件
    public static final String PROD_DOC_TYPE_HOLDER = "20302";//持有人账户相关附件
    public static final String PROD_DOC_TYPE_EXCESS_FUND = "20303";//超额资金划转、次级收益收款账户相关附件
    public static final String PROD_DOC_TYPE_ASSET_ORG_SERVICE_FEE = "20304";//资产机构服务费账户相关附件
    public static final String PROD_DOC_TYPE_VERIFICATION_FEE_REFUND = "20305";//验资费垫付返还、初始登记费返还账户相关附件
    public static final String PROD_DOC_TYPE_LAWYER_FEE = "20306";//律师费账户相关附件
    public static final String PROD_DOC_TYPE_AUDIT_FEE = "20307";//审计费账户相关附件
    public static final String PROD_DOC_TYPE_INIT_SIGN_FEE = "20308";//初始登记费账户相关附件
    public static final String PROD_DOC_TYPE_VERIFICATION_FEE = "20309";//验资费账户相关附件
    public static final String PROD_DOC_TYPE_SECONDARY_BUY_CLOSE_RATE = "20310";//次级认购人销户结息账户相关附件
    public static final String PROD_DOC_TYPE_CYCLE_BUY_ORIGINAL_OWNER = "20311";//循环购买原始权益人账户相关附件
    public static final String PROD_DOC_TYPE_SALE_FEE = "20312";//销售费账户相关附件
    public static final String PROD_DOC_TYPE_RATING_FEE = "20313";//评级费账户相关附件

    public static final String PROD_DOC_TYPE_OPEN_DAY_NOTICE_FILE = "40000";//开放期公告附件
    public static final String PROD_DOC_TYPE_OPEN_DAY_FILE = "40010";//开放期审核流程相关附件

    public static final String PROD_DOC_TYPE_DIVIDEND_PRE_NOTICE = "30020";//收益分配预告附件
    public static final String PROD_DOC_TYPE_DIVIDEND_NOTICE = "30021";//收益分配正式附件（开放期确认流程上传的收益分配正式公告）

    public static final String PROD_DOC_TYPE_REPORT_NOTICE = "40001";//一季度报告附件

    public static final String PROD_DOC_TYPE_PRODUCT_SCHEME = "50001";//产品方案

    public static final String PROD_DOC_TYPE_SALE_AGENCY_CONTRACT = "50113";//代销协议
    public static final String PROD_DOC_TYPE_PROD_ANNOUNCEMENT_LAST = "50114";//募集公告-终版
    public static final String PROD_DOC_TYPE_PROD_ANNOUNCEMENT_EDIT = "50115";//募集公告修改（定稿非盖章版）
    public static final String PROD_DOC_TYPE_INVEST_ASSET_CHECK = "50401";//底层资产投资者穿透信息表
    public static final String PROD_DOC_TYPE_INVEST_PROD_REGISTER = "50402";//底层产品备案证明材料

    public static final String PROD_DOC_TYPE_PROD_CONTRACT = "50101";//合同（定稿WORD版） 50101
    public static final String PROD_DOC_TYPE_PROD_CONTRACT_SIGNED = "50102";//合同（盖章版） 50102

    public static final String PROD_DOC_TYPE_SALE_AGENCY_PARAM = "50123";//机构参数表
    public static final String PROD_DOC_TYPE_SALE_AGENCY_AUDIT = "50122";//产品评审流程
    public static final String PROD_DOC_TYPE_SALE_AGENCY_TEST_FREE = "50125";//免测试申请调研表

    public static final String PROD_DOC_TYPE_END_NOTICE = "50701";//终止公告，507XX是终止相关的附件类型，终止文件（单一终止函/集合终止公告）

    //    A.清算报告（word版）                50712
//    B.清算报告（用印定稿版）            50710
//    C.清算报告：需委托人用印版          50716
//    D.清算报告委托人确认沟通记录        50718
//    E.清算结果公告--仅集合非终次清算    50714
    public static final String PROD_DOC_TYPE_END_CLEAR_NOTICE_SEAL_FINAL = "50710";//清算报告（用印定稿版）
    public static final String PROD_DOC_TYPE_END_CLEAR_NOTICE_WORD = "50712";//清算报告（word版）
    public static final String PROD_DOC_TYPE_END_CLEAR_NOTICE_SEAL = "50716";//清算报告：需委托人用印版
    public static final String PROD_DOC_TYPE_END_CLEAR_CUSTODY_CHAT = "50718";//清算报告委托人确认沟通记录
    public static final String PROD_DOC_TYPE_END_CLEAR_RESULT = "50714";//清算结果公告:仅集合非最终次清算，需要上传清算结果公告

    public static final String PROD_DOC_TYPE_END_CONFIRM = "50721";//终止，委托人终止事项确认文件（仅单一必传）
    public static final String PROD_DOC_TYPE_END_CLEAR_REGISTER_REPORT = "50726";//清算备案报告-终版，信披


    public static final String PROD_DOC_TYPE_NOPROD_CONTRACT_SIGN ="60000";//非产品合同协议相关附件
    public static final String PROD_DOC_TYPE_PROD_ESCROW_AGREEMENT_WORD = "50103";//托管协议（定稿WORD版）
    public static final String PROD_DOC_TYPE_PROD_ESCROW_AGREEMENT_SIGNED = "50104";//托管协议（盖章版）

    public static final String PROD_DOC_TYPE_PROD_RISK_DISCLOSURE_WORD = "50105";//风险揭示书（定稿WORD版）
    public static final String PROD_DOC_TYPE_PROD_RISK_DISCLOSURE_SIGNED = "50106";//风险揭示书（盖章版）

    public static final String PROD_DOC_TYPE_PROD_PLAN_EXPLAIN_WORD = "50107";//（定稿WORD版）
    public static final String PROD_DOC_TYPE_PROD_PLAN_EXPLAIN_LAST = "50108";//计划说明书（盖章版）

    public static final String PROD_DOC_TYPE_PROD_BASE_INFO_LAST = "50109";//产品基本信息表（定稿非盖章版）

    public static final String PROD_DOC_TYPE_PROD_COMMISSION_RATE_SIGNED = "50111";//佣金费率表（盖章版）
    public static final String PROD_DOC_TYPE_PROD_RESERVATION_SIGNED = "50112";//产品预留印鉴（盖章版）

    public static final String PROD_DOC_TYPE_PROD_FILING_REPORT_WORD = "50201";//备案报告（WORD版）
    public static final String PROD_DOC_TYPE_PROD_FILING_REPORT_LAST = "50501";//备案报告-终版

    public static final String PROD_DOC_TYPE_PROD_COMPLIANCE_WORD = "50202";//合规负责人的合规审查意见（WORD版）
    public static final String PROD_DOC_TYPE_RISK_SIGN_EXPLAIN = "50203";//风险揭示书签署情况说明

    public static final String PROD_DOC_TYPE_DIGITAL_CONTRACT_EXPLAIN = "50204";//电子合同服务协议相关说明

    public static final String PROD_DOC_TYPE_PROD_COMPLIANCE_LAST = "50502";//合规负责人的合规审查意见-终版
    public static final String PROD_DOC_TYPE_PROD_INVEST_RISK_OR_RISK_SIGN_LAST = "50503";//所有投资者签字盖章的风险揭示书（签字盖章页）或风险揭示书签署情况说明-终版

    public static final String PROD_DOC_TYPE_ADMIN_EXPLAIN_WORD = "50205";//管理人需要说明问题的文件
    public static final String PROD_DOC_TYPE_ADMIN_EXPLAIN_PDF = "50508";//管理人需要说明问题的文件-终版

    public static final String PROD_DOC_TYPE_PROD_ARRIVAL_NOTICE = "50206";//委托资产到账通知（仅托管人盖章版）
    public static final String PROD_DOC_TYPE_PROD_START_NOTICE = "50207";//产品起始通知书(定稿盖章版)

    public static final String PROD_DOC_TYPE_PROD_EST_ANNOUNCEMENT = "50301";//成立公告（初稿）
    public static final String PROD_DOC_TYPE_INVEST_BUY_INFO = "50302";//投资者认购信息表

    public static final String PROD_DOC_TYPE_EST_ANNOUNCEMENT_LAST = "50504";//成立公告-终版
    public static final String PROD_DOC_TYPE_VERIFICATION_REPORT_LAST = "50505";//验资报告-终版

    public static final String PROD_DOC_TYPE_INVEST_MONEY_LAUNDERING_UPLOAD = "50601";//投资者适当性反洗钱材料上传

//    public static final String PROD_DOC_TYPE_END_NOTICE = "50701";//终止公告，57XX是终止相关的附件类型
    public static final String PROD_DOC_TYPE_END_CLEAR_NOTICE ="50710";//清算公告
    //账户档案类别
    public static final List<String> PROD_DOC_TYPE_LIST_ACCOUNT = Arrays.asList(DictConstant.PROD_DOC_TYPE_CUSTODY
            , DictConstant.PROD_DOC_TYPE_SECURITY_ACCOUNT
            , DictConstant.PROD_DOC_TYPE_BROKER_ACCOUNT
            , DictConstant.PROD_DOC_TYPE_CREDIT_ACCOUNT
            , DictConstant.PROD_DOC_TYPE_FUTURE_ACCOUNT
            , DictConstant.PROD_DOC_TYPE_FUTURE_PARAM
            , DictConstant.PROD_DOC_TYPE_PUB_FUND_ACCOUNT
            , DictConstant.PROD_DOC_TYPE_INTERBANK_PBOC
            , DictConstant.PROD_DOC_TYPE_INTERBANK_BOND
            , DictConstant.PROD_DOC_TYPE_INTERBANK_SH_CLEAR
            //新股网下配售附件列表
            , DictConstant.PROD_DOC_TYPE_NEW_STOCK_OFFLINE_SALES
            //账户变更附件列表
            , DictConstant.PROD_DOC_TYPE_CUSTODY_MODIFY
            , DictConstant.PROD_DOC_TYPE_SECURITY_ACCOUNT_MODIFY
            , DictConstant.PROD_DOC_TYPE_BROKER_ACCOUNT_MODIFY
            , DictConstant.PROD_DOC_TYPE_CREDIT_ACCOUNT_MODIFY
            , DictConstant.PROD_DOC_TYPE_INTERBANK_PBOC_MODIFY
            , DictConstant.PROD_DOC_TYPE_INTERBANK_BOND_MODIFY
            , DictConstant.PROD_DOC_TYPE_INTERBANK_SH_CLEAR_MODIFY
            , DictConstant.PROD_DOC_TYPE_INTERBANK_FUTURE_ACCOUNT_MODIFY
            , DictConstant.PROD_DOC_TYPE_INTERBANK_FUTURE_PARAM_MODIFY
            , DictConstant.PROD_DOC_TYPE_INTERBANK_PUB_FUND_ACCOUNT_MODIFY
            //账户注销附件列表
            , DictConstant.PROD_DOC_TYPE_CUSTODY_CANCEL
            , DictConstant.PROD_DOC_TYPE_SECURITY_ACCOUNT_CANCEL
            , DictConstant.PROD_DOC_TYPE_BROKER_ACCOUNT_CANCEL
            , DictConstant.PROD_DOC_TYPE_CREDIT_ACCOUNT_CANCEL
            , DictConstant.PROD_DOC_TYPE_INTERBANK_PBOC_CANCEL
            , DictConstant.PROD_DOC_TYPE_INTERBANK_BOND_CANCEL
            , DictConstant.PROD_DOC_TYPE_INTERBANK_SH_CLEAR_CANCEL
            , DictConstant.PROD_DOC_TYPE_INTERBANK_FUTURE_ACCOUNT_CANCEL
            , DictConstant.PROD_DOC_TYPE_INTERBANK_FUTURE_PARAM_CANCEL
            , DictConstant.PROD_DOC_TYPE_INTERBANK_PUB_FUND_ACCOUNT_CANCEL

            //银行间中债账户暂停附件
            , DictConstant.PROD_DOC_TYPE_INTERBANK_BOND_PAUSE

            //abs账户附件列表
            , DictConstant.PROD_DOC_TYPE_BUY_BASE_ASSET
            , DictConstant.PROD_DOC_TYPE_CHINA_CLEAR_ASSIGN
            , DictConstant.PROD_DOC_TYPE_HOLDER
            , DictConstant.PROD_DOC_TYPE_EXCESS_FUND
            , DictConstant.PROD_DOC_TYPE_ASSET_ORG_SERVICE_FEE
            , DictConstant.PROD_DOC_TYPE_VERIFICATION_FEE_REFUND
            , DictConstant.PROD_DOC_TYPE_LAWYER_FEE
            , DictConstant.PROD_DOC_TYPE_AUDIT_FEE
            , DictConstant.PROD_DOC_TYPE_INIT_SIGN_FEE
            , DictConstant.PROD_DOC_TYPE_VERIFICATION_FEE
            , DictConstant.PROD_DOC_TYPE_SECONDARY_BUY_CLOSE_RATE
            , DictConstant.PROD_DOC_TYPE_CYCLE_BUY_ORIGINAL_OWNER
    );

    /**
     * 账户开立节点通知信息类型	，字典： am_workflow_node_remind_type
     */
    public static final String WORKFLOW_NODE_REMIND_TYPE_FUTURE = "10"; //期货账户
    public static final String WORKFLOW_NODE_REMIND_TYPE_CAPITAL = "11"; //普通资金账户
    public static final String WORKFLOW_NODE_REMIND_TYPE_SECURITY = "12"; //普通证券账户
    public static final String WORKFLOW_NODE_REMIND_TYPE_CREDIT_SECURITY = "13"; //两融资金账户和证券账户
    public static final String WORKFLOW_NODE_REMIND_TYPE_SH_FIX_INCOME = "14"; //上海固收平台账号维护
    public static final String WORKFLOW_NODE_REMIND_TYPE_SH_ASSIGN_ORDER = "15"; //上交所指定交易
    public static final String WORKFLOW_NODE_REMIND_TYPE_SH_CLEAR = "16"; //上清所账户
    public static final String WORKFLOW_NODE_REMIND_TYPE_BOND = "17"; //中债账户
    public static final String WORKFLOW_NODE_REMIND_TYPE_CAPITAL_AND_SECURITY = "18"; //普通资金及证券账户
    public static final String WORKFLOW_NODE_REMIND_TYPE_TRADE_SEAT = "19"; //交易单元
    public static final String WORKFLOW_NODE_REMIND_TYPE_CREDIT_CAPITAL = "23"; //两融资金账户
    public static final String WORKFLOW_NODE_REMIND_TYPE_BJ_TRADE = "24"; //北交所账户
    public static final String WORKFLOW_NODE_REMIND_TYPE_TRANS_SUB = "25"; //交易主体账户

    /*
    * 账户类型与关联的账户开立回执类型映射
    * */
    public static Map<String, List<String>> ACCOUNT_TYPE_DOC_MAP = new HashMap();

    static {
        ACCOUNT_TYPE_DOC_MAP.put(WORKFLOW_NODE_REMIND_TYPE_FUTURE, Arrays.asList(PROD_DOC_TYPE_FUTURE_PARAM, PROD_DOC_TYPE_FUTURE_ACCOUNT));
        ACCOUNT_TYPE_DOC_MAP.put(WORKFLOW_NODE_REMIND_TYPE_CAPITAL, Arrays.asList(PROD_DOC_TYPE_BROKER_ACCOUNT));
        ACCOUNT_TYPE_DOC_MAP.put(WORKFLOW_NODE_REMIND_TYPE_SECURITY, Arrays.asList(PROD_DOC_TYPE_SECURITY_ACCOUNT));
        ACCOUNT_TYPE_DOC_MAP.put(WORKFLOW_NODE_REMIND_TYPE_CREDIT_SECURITY, Arrays.asList(PROD_DOC_TYPE_CREDIT_ACCOUNT));
        ACCOUNT_TYPE_DOC_MAP.put(WORKFLOW_NODE_REMIND_TYPE_SH_FIX_INCOME, Arrays.asList(PROD_DOC_TYPE_SECURITY_ACCOUNT));
        ACCOUNT_TYPE_DOC_MAP.put(WORKFLOW_NODE_REMIND_TYPE_SH_ASSIGN_ORDER, Arrays.asList(PROD_DOC_TYPE_SECURITY_ACCOUNT));
        ACCOUNT_TYPE_DOC_MAP.put(WORKFLOW_NODE_REMIND_TYPE_SH_CLEAR, Arrays.asList(PROD_DOC_TYPE_INTERBANK_SH_CLEAR, PROD_DOC_TYPE_INTERBANK_PBOC));
        ACCOUNT_TYPE_DOC_MAP.put(WORKFLOW_NODE_REMIND_TYPE_BOND, Arrays.asList(PROD_DOC_TYPE_INTERBANK_BOND, PROD_DOC_TYPE_INTERBANK_PBOC));
    }


    /**
     * 流程节点类型
     */
    public static final String WORKFLOW_NODE_TYPE_DETAIL = "0"; //明细节点

    public static final String WORKFLOW_NODE_TYPE_SCAN = "1"; //概览节点

    public static final String WORKFLOW_NODE_TYPE_PUBLIC = "2"; //公共节点

    /**
     * 投资追加提取工作流状态，字典： am_invest_workflow_status
     *
     * 【重要】！！！！20211210
     * 追加提取视图名称：v_am_invest_workflow_capital_for_glam需要提取资金岗审核通过的流水，判断的是资金岗审核后的节点状态，状态变更需要检查！！！
     * invest_workflow_status not in('90','91','93','10','20','21','22','23','30','31','32')视为资金岗确认过的状态
     */
    public static final String DICT_CODE_INVEST_WORKFLOW_STATUS = "am_invest_workflow_status";

    public static final String INVEST_WORKFLOW_STATUS_90 = "90"; //发起申请
    public static final String INVEST_WORKFLOW_STATUS_91 = "91"; //驳回，流程结束
    public static final String INVEST_WORKFLOW_STATUS_92 = "92"; //流程正常结束
    public static final String INVEST_WORKFLOW_STATUS_93 = "93"; //撤回

    public static final String INVEST_WORKFLOW_STATUS_10 = "10"; //资管运营，发起追加
    public static final String INVEST_WORKFLOW_STATUS_11 = "11"; //资金岗，确认资金到位，可以取消回退
    public static final String INVEST_WORKFLOW_STATUS_12 = "12"; //申请人，补传【废弃】
    public static final String INVEST_WORKFLOW_STATUS_13 = "13"; //通知合规/估值，通知【废弃】
    public static final String INVEST_WORKFLOW_STATUS_14 = "14"; //资管运营，回传三方合同【废弃】




    public static final String INVEST_WORKFLOW_STATUS_20 = "20"; //投资经理等发起提取
    public static final String INVEST_WORKFLOW_STATUS_21 = "21"; //投资经理，审批确认‘’
    public static final String INVEST_WORKFLOW_STATUS_22 = "22"; //申请人，补传
    public static final String INVEST_WORKFLOW_STATUS_23 = "23"; //风控审核，可能驳回
    public static final String INVEST_WORKFLOW_STATUS_24 = "24"; //资金岗，确认资金到位，可以取消回退
    public static final String INVEST_WORKFLOW_STATUS_25 = "25"; //申请人，回传三方合同
    public static final String INVEST_WORKFLOW_STATUS_26 = "26"; //FA计算业绩报酬
    public static final String INVEST_WORKFLOW_STATUS_27 = "27"; //合规审核
    public static final String INVEST_WORKFLOW_STATUS_28 = "28"; //投资经理确认业绩报酬支付提醒日


    public static final String INVEST_WORKFLOW_STATUS_30 = "30"; //交易服务组，发起预追加
    public static final String INVEST_WORKFLOW_STATUS_31 = "31"; //资管风控，审批
    public static final String INVEST_WORKFLOW_STATUS_32 = "32"; //O32上账确认
    public static final String INVEST_WORKFLOW_STATUS_33 = "33"; //资金岗，确认资金到位，可以取消回退
    public static final String INVEST_WORKFLOW_STATUS_34 = "34"; //投资经理，补单章版合同【废弃】
    public static final String INVEST_WORKFLOW_STATUS_35 = "35"; //交易服务组，回传三方合同【废弃】

    public static Map<String, String> INVEST_WORKFLOW_STATUS_MAP = new HashMap();

    static {
        INVEST_WORKFLOW_STATUS_MAP.put(INVEST_WORKFLOW_STATUS_90, INVEST_WORKFLOW_STATUS_90);
        INVEST_WORKFLOW_STATUS_MAP.put(INVEST_WORKFLOW_STATUS_91, INVEST_WORKFLOW_STATUS_91);
        INVEST_WORKFLOW_STATUS_MAP.put(INVEST_WORKFLOW_STATUS_92, INVEST_WORKFLOW_STATUS_92);

        INVEST_WORKFLOW_STATUS_MAP.put(INVEST_WORKFLOW_STATUS_10, INVEST_WORKFLOW_TYPE_ADD);
        INVEST_WORKFLOW_STATUS_MAP.put(INVEST_WORKFLOW_STATUS_11, INVEST_WORKFLOW_TYPE_ADD);
        INVEST_WORKFLOW_STATUS_MAP.put(INVEST_WORKFLOW_STATUS_12, INVEST_WORKFLOW_TYPE_ADD);
        INVEST_WORKFLOW_STATUS_MAP.put(INVEST_WORKFLOW_STATUS_13, INVEST_WORKFLOW_TYPE_ADD);
        INVEST_WORKFLOW_STATUS_MAP.put(INVEST_WORKFLOW_STATUS_14, INVEST_WORKFLOW_TYPE_ADD);



        INVEST_WORKFLOW_STATUS_MAP.put(INVEST_WORKFLOW_STATUS_20, INVEST_WORKFLOW_TYPE_CAPITAL_TRANSFER);
        INVEST_WORKFLOW_STATUS_MAP.put(INVEST_WORKFLOW_STATUS_21, INVEST_WORKFLOW_TYPE_CAPITAL_TRANSFER);
        INVEST_WORKFLOW_STATUS_MAP.put(INVEST_WORKFLOW_STATUS_22, INVEST_WORKFLOW_TYPE_CAPITAL_TRANSFER);
        INVEST_WORKFLOW_STATUS_MAP.put(INVEST_WORKFLOW_STATUS_23, INVEST_WORKFLOW_TYPE_CAPITAL_TRANSFER);
        INVEST_WORKFLOW_STATUS_MAP.put(INVEST_WORKFLOW_STATUS_24, INVEST_WORKFLOW_TYPE_CAPITAL_TRANSFER);
        INVEST_WORKFLOW_STATUS_MAP.put(INVEST_WORKFLOW_STATUS_25, INVEST_WORKFLOW_TYPE_CAPITAL_TRANSFER);
        INVEST_WORKFLOW_STATUS_MAP.put(INVEST_WORKFLOW_STATUS_26, INVEST_WORKFLOW_TYPE_CAPITAL_TRANSFER);
        INVEST_WORKFLOW_STATUS_MAP.put(INVEST_WORKFLOW_STATUS_28, INVEST_WORKFLOW_TYPE_CAPITAL_TRANSFER);


        INVEST_WORKFLOW_STATUS_MAP.put(INVEST_WORKFLOW_STATUS_30, INVEST_WORKFLOW_TYPE_ADD_PRE);
        INVEST_WORKFLOW_STATUS_MAP.put(INVEST_WORKFLOW_STATUS_31, INVEST_WORKFLOW_TYPE_ADD_PRE);
        INVEST_WORKFLOW_STATUS_MAP.put(INVEST_WORKFLOW_STATUS_32, INVEST_WORKFLOW_TYPE_ADD_PRE);
        INVEST_WORKFLOW_STATUS_MAP.put(INVEST_WORKFLOW_STATUS_33, INVEST_WORKFLOW_TYPE_ADD_PRE);
        INVEST_WORKFLOW_STATUS_MAP.put(INVEST_WORKFLOW_STATUS_34, INVEST_WORKFLOW_TYPE_ADD_PRE);
        INVEST_WORKFLOW_STATUS_MAP.put(INVEST_WORKFLOW_STATUS_35, INVEST_WORKFLOW_TYPE_ADD_PRE);
    }

    /**
     * 投资追加提取工作流状态及对应处理人角色，多个角色可审核则逗号分割
     */
    public static HashMap<String, String> INVEST_WORKFLOW_STATUS_ROLE_MAP = new HashMap<>();
    static {
        INVEST_WORKFLOW_STATUS_ROLE_MAP.put(DictConstant.INVEST_WORKFLOW_STATUS_10, "估值资金岗");
//        INVEST_WORKFLOW_STATUS_ROLE_MAP.put(DictConstant.INVEST_WORKFLOW_STATUS_11, "资管运营存续期管理岗");

        //INVEST_WORKFLOW_STATUS_20-投资经理
//        INVEST_WORKFLOW_STATUS_ROLE_MAP.put(DictConstant.INVEST_WORKFLOW_STATUS_21, "资管运营存续期管理岗");//21由发起人回传
        INVEST_WORKFLOW_STATUS_ROLE_MAP.put(DictConstant.INVEST_WORKFLOW_STATUS_22, "资管风控岗");
        INVEST_WORKFLOW_STATUS_ROLE_MAP.put(DictConstant.INVEST_WORKFLOW_STATUS_23, "估值资金岗");
//        INVEST_WORKFLOW_STATUS_ROLE_MAP.put(DictConstant.INVEST_WORKFLOW_STATUS_24, "资管运营存续期管理岗");//改为申请人回传
        INVEST_WORKFLOW_STATUS_ROLE_MAP.put(DictConstant.INVEST_WORKFLOW_STATUS_26, "估值基金会计岗");
        INVEST_WORKFLOW_STATUS_ROLE_MAP.put(DictConstant.INVEST_WORKFLOW_STATUS_27, "资产管理部合规岗");
        INVEST_WORKFLOW_STATUS_ROLE_MAP.put(DictConstant.INVEST_WORKFLOW_STATUS_28, "#PROD_MANAGER");


        //
        INVEST_WORKFLOW_STATUS_ROLE_MAP.put(DictConstant.INVEST_WORKFLOW_STATUS_30, "资管风控岗");
        INVEST_WORKFLOW_STATUS_ROLE_MAP.put(DictConstant.INVEST_WORKFLOW_STATUS_31, "估值资金岗");
        INVEST_WORKFLOW_STATUS_ROLE_MAP.put(DictConstant.INVEST_WORKFLOW_STATUS_32, "估值资金岗");
        INVEST_WORKFLOW_STATUS_ROLE_MAP.put(DictConstant.INVEST_WORKFLOW_STATUS_33, "资管交易服务组");
    }


    /**
     * 投资追加提取事件提醒
     */
    public static final String INVEST_WORKFLOW_REMIND_CAPITAL_NOT_RECEIVED = "10"; //资金未到账




    /**
     * active file配置
     */
    public static final String SYSTEM_ACTIVE_PROFILE_DEV = "dev"; //
    public static final String SYSTEM_ACTIVE_PROFILE_TEST = "test"; //
    public static final String SYSTEM_ACTIVE_PROFILE_PROD = "pro"; //

    /**
     * 费用类型，字典：am_expense_type
     */
    public static final String EXPENSE_CARRY_TYPE_MANAGE = "1"; //管理费
    public static final String EXPENSE_CARRY_TYPE_CUSTODY = "2"; //托管费
    public static final String EXPENSE_CARRY_TYPE_CARRY = "3"; //业绩报酬


    /**
     * 两费及业绩报酬提醒类别，字典： am_fee_carry_remind_type
     */
    public static final String FEE_CARRY_REMIND_TYPE_MANAGE_ACCRUAL = "10"; //管理费计提提醒
    public static final String FEE_CARRY_REMIND_TYPE_MANAGE_PAY = "11"; //管理费支付提醒
    public static final String FEE_CARRY_REMIND_TYPE_CUSTODY_ACCRUAL = "20"; //托管费计提提醒
    public static final String FEE_CARRY_REMIND_TYPE_CUSTODY_PAY = "21"; //托管费支付提醒
    public static final String FEE_CARRY_REMIND_TYPE_CARRY_ACCRUAL = "30"; //业绩报酬计提提醒
    public static final String FEE_CARRY_REMIND_TYPE_CARRY_PAY= "31"; //业绩报酬支付

    /**
     * 两费及业绩报酬提醒类别及对应中文描述
     */
    public static HashMap<String, String> FEE_CARRY_REMIND_TYPE_MAP = new HashMap<>();
    static {
        FEE_CARRY_REMIND_TYPE_MAP.put(DictConstant.FEE_CARRY_REMIND_TYPE_MANAGE_ACCRUAL, "管理费计提提醒");
        FEE_CARRY_REMIND_TYPE_MAP.put(DictConstant.FEE_CARRY_REMIND_TYPE_MANAGE_PAY, "管理费支付提醒");
        FEE_CARRY_REMIND_TYPE_MAP.put(DictConstant.FEE_CARRY_REMIND_TYPE_CUSTODY_ACCRUAL, "托管费计提提醒");
        FEE_CARRY_REMIND_TYPE_MAP.put(DictConstant.FEE_CARRY_REMIND_TYPE_CUSTODY_PAY, "托管费支付提醒");
        FEE_CARRY_REMIND_TYPE_MAP.put(DictConstant.FEE_CARRY_REMIND_TYPE_CARRY_ACCRUAL, "业绩报酬计提提醒");
        FEE_CARRY_REMIND_TYPE_MAP.put(DictConstant.FEE_CARRY_REMIND_TYPE_CARRY_PAY, "业绩报酬支付");
    }

    /**
     * 时间段类型，字典：am_day_period_type
     */
    public static final String DAY_PERIOD_TYPE_REMIND = "1"; //计提提醒日
    public static final String DAY_PERIOD_TYPE_PAY = "2"; //支付提醒日
    public static final String DAY_FINISH_TYPE_PAY = "3"; //计提完成日
    public static final String DAY_FINISH_TYPE_DIVIDEND = "4"; //收益分配日后

    /**
     * 计提提醒日，字典：am_accrual_remind_day=》目前计提提醒日只有业绩报酬才会使用，两费只有支付提醒日
     */
    /**
     * 业绩报酬计提提醒日字典编码
     */
    public static final String DICT_CODE_ACCRUAL_REMIND_DAY = "am_accrual_remind_day";
    public static final String ACCRUAL_DAY_NO = "1"; //无
    public static final String ACCRUAL_DAY_DURING = "t2"; //时间段
    public static final String ACCRUAL_DAY_EXTRACT = "3"; //提取日
    public static final String ACCRUAL_DAY_INCOME_DIST = "4"; //收益分配日
    public static final String ACCRUAL_DAY_STOP = "5"; //终止日
    public static final String ACCRUAL_DAY_NO_FIXED_RULE = "10"; //服务类产品无固定规则

    /*
    * 收益分配时，是否计提业绩报酬
    * */
    public static final String NEED_CARRY_WHEN_DIVIDEND_NULL="0";//系统未维护收益分配时是否计提业绩报酬
    public static final String NEED_CARRY_WHEN_DIVIDEND_NO="1";//收益分配时，不需要计提业绩报酬
    public static final String NEED_CARRY_WHEN_DIVIDEND_YES="2";//收益分配时，需要计提业绩报酬
    /**
     * 收益分配时，是否计提业绩报酬
     */
    public static HashMap<String, String> NEED_CARRY_WHEN_DIVIDEND_MAP = new HashMap<>();

    static {
        NEED_CARRY_WHEN_DIVIDEND_MAP.put(NEED_CARRY_WHEN_DIVIDEND_NULL, "系统未维护是否计提业绩报酬");
        NEED_CARRY_WHEN_DIVIDEND_MAP.put(NEED_CARRY_WHEN_DIVIDEND_NO, "不需要计提业绩报酬");
        NEED_CARRY_WHEN_DIVIDEND_MAP.put(NEED_CARRY_WHEN_DIVIDEND_YES, "需要计提业绩报酬");
    }

    /**
     * 两费【支付】提醒日 ，字典：am_pay_remind_day
     */
    public static final String PAY_DAY_NO = "1"; //不计提
    public static final String PAY_DAY_PERIOD = "t2"; //时间段
    public static final String PAY_DAY_STOP = "3"; //终止日
    public static final String PAY_DAY_ACCURAL_FINISH_DATE = "t3"; //计提完成日
    public static final String PAY_DAY_DEVIDEND_DATE = "5"; //收益分配日起
    public static final String PAY_DAY_NO_FIXED_RULE = "10"; //服务类产品无固定规则
    public static final String PAY_DAY_WHEN_WITHDRAWAL = "11"; //提取时

    /**
     * 业绩报酬处理流程状态 字典： am_remind_fee_carry_flow_status
     */

    public static final String DICT_CODE_REMIND_CARRY_FLOW_STATUS = "am_remind_fee_carry_flow_status";
    public static final String REMIND_CARRY_FLOW_STATUS_START = "10"; //开始节点
    public static final String REMIND_CARRY_FLOW_STATUS_ACCRUAL_DATE = "12"; //投资经理确认计提时间
    public static final String REMIND_CARRY_FLOW_STATUS_FA = "14"; //FA计算金额
    public static final String REMIND_CARRY_FLOW_STATUS_INVEST_CONFIRM = "16"; //投资经理复核
    public static final String REMIND_CARRY_FLOW_STATUS_INVEST_PAY_DATE = "17"; //投资经理确认支付日
//    public static final String REMIND_CARRY_FLOW_STATUS_COP_WITHDRAWAL = "18"; //估值结算处理，客户提取金额划款
    public static final String REMIND_CARRY_FLOW_STATUS_NOTICE_CUSTOMER = "20"; //存续期管理岗拟定收益分配通知书通知客户签字
    public static final String REMIND_CARRY_FLOW_STATUS_TRANSFER = "22"; //支付提醒存续期管理岗发起划款流程
    public static final String REMIND_CARRY_FLOW_STATUS_END = "99"; //结束

    /**
     * 投资追加提取工作流状态及对应处理人角色
     */
    public static HashMap<String, String> CARRY_FLOW_STATUS_ROLE_MAP = new HashMap<>();

    static {
        CARRY_FLOW_STATUS_ROLE_MAP.put(DictConstant.REMIND_CARRY_FLOW_STATUS_ACCRUAL_DATE, Constant.ROLE_PROD_INVEST_MANAGER_ONLY);
        CARRY_FLOW_STATUS_ROLE_MAP.put(DictConstant.REMIND_CARRY_FLOW_STATUS_FA, "估值基金会计岗");
        CARRY_FLOW_STATUS_ROLE_MAP.put(DictConstant.REMIND_CARRY_FLOW_STATUS_INVEST_CONFIRM, Constant.ROLE_PROD_INVEST_MANAGER_ONLY);
        CARRY_FLOW_STATUS_ROLE_MAP.put(DictConstant.REMIND_CARRY_FLOW_STATUS_INVEST_PAY_DATE, Constant.ROLE_PROD_INVEST_MANAGER_ONLY);
//        CARRY_FLOW_STATUS_ROLE_MAP.put(DictConstant.REMIND_CARRY_FLOW_STATUS_COP_WITHDRAWAL, "");//在划款流程处理
        CARRY_FLOW_STATUS_ROLE_MAP.put(DictConstant.REMIND_CARRY_FLOW_STATUS_NOTICE_CUSTOMER, "资管运营存续期管理岗");
        CARRY_FLOW_STATUS_ROLE_MAP.put(DictConstant.REMIND_CARRY_FLOW_STATUS_TRANSFER, "资管运营存续期管理岗");
    }

    /**
     * 工作流程类型	 字典： am_flow_type
     */
    public static final String FLOW_TYPE_CARRY = "10"; //业绩报酬待办流程
    public static final String FLOW_TYPE_OPEN_DAY_INVEST_MANAGER = "12"; //开放期投资经理确认
    public static final String FLOW_TYPE_INVEST_WORK_FLOW = "14"; //划款流程节点处理信息


    /**
     * 两费及业绩报酬待办完成状态 am_remind_fee_todo_status
     */
    public static final String REMIND_FEE_TODO_PENDING = "1"; //待完成
    public static final String REMIND_FEE_TODO_PROCESSED = "2"; //已完成

    /**
     * 待办是否高亮显示
     */
    public static final String REMIND_FEE_TODO_FLAG_NO = "N"; //不高亮
    public static final String REMIND_FEE_TODO_FLAG_YES = "Y"; //高亮

    /**
     * 客户定期报告信息发送状态，字典： am_report_status
     */
    public static final String REPORT_STATUS_TODO = "1"; //待发送
    public static final String REPORT_STATUS_PASS = "2"; //已审核
    public static final String REPORT_STATUS_SUCCESS = "3"; //已发送


    /**
     * 账户开立节点状态	，字典： am_workflow_node_action_state
     */
    public static final String WORKFLOW_NODE_ACTION_STATE_TODO = "1"; //待办
    public static final String WORKFLOW_NODE_ACTION_STATE_DONE = "2"; //完成
    public static final String WORKFLOW_NODE_ACTION_STATE_CANCEL = "3"; //取消
    /**
     * 消息类型，字典： am_msg_type
     */
    public static final String MSG_TYPE_MAIL = "1"; //邮件
    public static final String MSG_TYPE_SHORT_MESSAGE = "2"; //短信

    /**
     * 消息类型，字典： am_mail_type
     */
    public static final String MAIL_TYPE_MAIL_DEFAULT = "1"; //邮箱一
    public static final String MAIL_TYPE_MAIL_OTHER = "2"; //邮箱二

    /**
     * 日历待办和提醒类型，字典： am_todo_remind_type
     */
    public static final String TODO_REMIND_TYPE_FEE_PAY = "1"; //两费支付提醒
    public static final String TODO_REMIND_TYPE_PER_ACCRUAL = "2"; //业绩报酬计提提醒
    public static final String TODO_REMIND_TYPE_PER_PAY = "3"; //业报支付提醒

    /**
     * 产品日期类型，字典： am_prod_day_type
     */
    public static final String PROD_DAY_TYPE_EXPIRE_DATE = "1000"; //到期日
    public static final String PROD_DAY_TYPE_REDE_DATE = "1003"; //赎回日
    public static final String PROD_DAY_TYPE_DIST_DATE = "1004"; //分配日
    public static final String PROD_DAY_TYPE_WITH_DATE = "1005"; //提取日
    public static final String PROD_DAY_TYPE_OPEN_DATE = "2000"; //开发日

    /**
     * 两费提醒，时间段起始日、结束日类型，字典： am_day_period_unit
     */
    public static final String DAY_PERIOD_UNIT_DAY = "1"; //日
    public static final String DAY_PERIOD_UNIT_MONTH = "2"; //月
    public static final String DAY_PERIOD_UNIT_QUARTER = "3"; //季度
    public static final String DAY_PERIOD_UNIT_HALF_YEAR = "4"; //半年
    public static final String DAY_PERIOD_UNIT_YEAR = "5"; //年
    public static final String DAY_PERIOD_UNIT_QUARTER_LAST_MONTH = "6"; //季度末月
    public static final String DAY_PERIOD_UNIT_2YEAR = "7"; //两年
    /**
     * 两费提醒，时间段频率类型，字典： am_day_period_frequency
     */
    public static final String DAY_PERIOD_FREQUENCY_EVERY = "0"; //每
    public static final String DAY_PERIOD_FREQUENCY_1 = "1"; //1
    public static final String DAY_PERIOD_FREQUENCY_2 = "2";
    public static final String DAY_PERIOD_FREQUENCY_3 = "3";
    public static final String DAY_PERIOD_FREQUENCY_4 = "4";
    public static final String DAY_PERIOD_FREQUENCY_5 = "5";
    public static final String DAY_PERIOD_FREQUENCY_6 = "6";
    public static final String DAY_PERIOD_FREQUENCY_7 = "7";
    public static final String DAY_PERIOD_FREQUENCY_8 = "8";
    public static final String DAY_PERIOD_FREQUENCY_9 = "9";
    public static final String DAY_PERIOD_FREQUENCY_10 = "10";
    public static final String DAY_PERIOD_FREQUENCY_11 = "11";
    public static final String DAY_PERIOD_FREQUENCY_12 = "12";
    public static final String DAY_PERIOD_FREQUENCY_FULL_CYCLE = "20";

    /**
     * 自然日、交易日类型，字典： am_biz_day_type
     */
    public static final String BIZ_DAY_TYPE_NATURAL = "1"; //自然日
    public static final String BIZ_DAY_TYPE_TRADE = "2"; //工作日（以上证为准）

    /**
     * 业绩报酬计算系统，字典： am_carry_cal_system
     */
    public static final String CARRY_CAL_SYSTEM_TA = "1"; //ta
    public static final String CARRY_CAL_SYSTEM_AM_PROD = "2"; //资管产品管理系统=》改为不计提
    public static final String CARRY_CAL_SYSTEM_MANUAL = "3"; //手工台账计算


    /**
     * 产品性质 字典: am_prod_property
     */
    public static final String PROD_PROP_ACTIVE_MANAGE = "10"; //主动
    public static final String PROD_PROP_SERVICE = "20"; //服务类
    public static final String PROD_PROP_ABS = "30"; //ABS
    public static final String PROD_PROP_CHANNEL = "40"; //通道


    /**
     * 简要产品类型，字典： am_prod_type_simple
     */
    public static final String DICT_PROD_TYPE_SIMPLE = "am_prod_type_simple";
    public static final String DICT_PROD_TYPE_SIMPLE_SINGLE = "1";//单一
    public static final String DICT_PROD_TYPE_SIMPLE_SET = "2";//2集合

    /**
     * 资管产品类型，字典： am_prod_type
     */
    public static final String PROD_TYPE_BIG_SET = "10"; //大集合
    public static final String PROD_TYPE_SMALL_SET = "20"; //小集合
    public static final String PROD_TYPE_SINGLE = "30"; //单一
    public static final String PROD_TYPE_SPECIAL_ITEM = "40"; //专项
    public static final String PROD_TYPE_INVEST_CON = "50"; //投顾
    public static final String PROD_TYPE_CONSIGNMENT = "60"; //代销
    public static final String PROD_TYPE_PF_BIG_SET = "11"; //大集合改公募

    public static Map<String, String> PROD_TYPE_OA_PROD_NATURE_MAP = new HashMap<>();

    static {
        //OA:0单一,1集合,2专项,3投顾,4投顾
        PROD_TYPE_OA_PROD_NATURE_MAP.put(PROD_TYPE_BIG_SET, "1");
        PROD_TYPE_OA_PROD_NATURE_MAP.put(PROD_TYPE_SMALL_SET, "1");
        PROD_TYPE_OA_PROD_NATURE_MAP.put(PROD_TYPE_SINGLE, "0");
        PROD_TYPE_OA_PROD_NATURE_MAP.put(PROD_TYPE_SPECIAL_ITEM, "2");
        PROD_TYPE_OA_PROD_NATURE_MAP.put(PROD_TYPE_INVEST_CON, "3");
        PROD_TYPE_OA_PROD_NATURE_MAP.put(PROD_TYPE_CONSIGNMENT, "4");
    }

    //***************单一、集合类型
    public static List<String> SINGLE_SET_PROD_TYPE_LIST = new ArrayList<>();

    static {
        SINGLE_SET_PROD_TYPE_LIST.add(PROD_TYPE_BIG_SET);
        SINGLE_SET_PROD_TYPE_LIST.add(PROD_TYPE_SMALL_SET);
        SINGLE_SET_PROD_TYPE_LIST.add(PROD_TYPE_SINGLE);
        SINGLE_SET_PROD_TYPE_LIST.add(PROD_TYPE_PF_BIG_SET);
    }


    public static Map<String, String> PROD_TYPE_NO_MAP = new HashMap<>();

    static {
        //产品系统编号和合同编号:DY单一,JH集合,ZX专项,TG投顾,DX代销
        PROD_TYPE_NO_MAP.put(PROD_TYPE_BIG_SET, "JH");
        PROD_TYPE_NO_MAP.put(PROD_TYPE_SMALL_SET, "JH");
        PROD_TYPE_NO_MAP.put(PROD_TYPE_SINGLE, "DY");
        PROD_TYPE_NO_MAP.put(PROD_TYPE_SPECIAL_ITEM, "ZX");
        PROD_TYPE_NO_MAP.put(PROD_TYPE_INVEST_CON, "TG");
        PROD_TYPE_NO_MAP.put(PROD_TYPE_CONSIGNMENT, "DX");
    }

    public static Map<String, String> PROD_TYPE_KEY_MAP = new HashMap<>();

    static {
        //产品系统编号和合同编号:DY单一,JH集合,ZX专项,TG投顾,DX代销
        PROD_TYPE_KEY_MAP.put(PROD_TYPE_BIG_SET, "AMPRODUCT_CONTRACT_NO_JH");
        PROD_TYPE_KEY_MAP.put(PROD_TYPE_SMALL_SET, "AMPRODUCT_CONTRACT_NO_JH");
        PROD_TYPE_KEY_MAP.put(PROD_TYPE_SINGLE, "AMPRODUCT_CONTRACT_NO_DY");
        PROD_TYPE_KEY_MAP.put(PROD_TYPE_SPECIAL_ITEM, "AMPRODUCT_CONTRACT_NO_ZX");
        PROD_TYPE_KEY_MAP.put(PROD_TYPE_INVEST_CON, "AMPRODUCT_CONTRACT_NO_TG");
        PROD_TYPE_KEY_MAP.put(PROD_TYPE_CONSIGNMENT, "AMPRODUCT_CONTRACT_NO_DX");
    }

    public static Map<String, String> PROD_TYPE_DESC_MAP = new HashMap<>();

    static {
        //产品系统编号和合同编号:DY单一,JH集合,ZX专项,TG投顾,DX代销
        PROD_TYPE_DESC_MAP.put(PROD_TYPE_BIG_SET, "J");
        PROD_TYPE_DESC_MAP.put(PROD_TYPE_SMALL_SET, "J");
        PROD_TYPE_DESC_MAP.put(PROD_TYPE_SINGLE, "D");
        PROD_TYPE_DESC_MAP.put(PROD_TYPE_SPECIAL_ITEM, "Z");
        PROD_TYPE_DESC_MAP.put(PROD_TYPE_INVEST_CON, "G");
        PROD_TYPE_DESC_MAP.put(PROD_TYPE_CONSIGNMENT, "X");
    }

    /**
     * 流程配置类型，字典： am_oa_process_type
     */
    public static final String OA_PROCESS_TYPE_SET_TA = "1"; //集合或者单一进TA
    public static final String OA_PROCESS_TYPE_SIGGLE_NOTTA = "2"; //单一不进TA

    /**
     * 消息管理_消息类型，字典： am_msg_type
     */
    public static final String MSG_TYPE_SMS = "1"; //短信
    public static final String MSG_TYPE_EMAIL = "2"; //邮件
    public static final String MSG_TYPE_SYNC = "3"; //同步

    /**
     * 消息管理_消息状态，字典： am_msg_status
     */
    public static final String MSG_STATUS_PENDING = "1"; //待发送
    public static final String MSG_STATUS_PROCESSED = "2"; //已发送
    public static final String MSG_STATUS_SUCCESS = "3"; //发送成功
    public static final String MSG_STATUS_FAILED = "4"; //发送失败

    /**
     * 产品管理_OA评审流程状态，字典： am_oa_audit_workflow_status
     */
    public static final String OA_AUDIT_WORKFLOW_STATUS_NOT_START = "1"; //未发起评审流程
    public static final String OA_AUDIT_WORKFLOW_STATUS_REVIEWING = "2"; //初审中
    public static final String OA_AUDIT_WORKFLOW_STATUS_PASS = "3"; //评审通过
    public static final String OA_AUDIT_WORKFLOW_STATUS_REJECT = "4"; //评审否决
    public static final String OA_AUDIT_WORKFLOW_STATUS_REGISTERING = "5"; //备案中
    public static final String OA_AUDIT_WORKFLOW_STATUS_REVIEWED = "6"; //复审中

    /**
     * 产品管理_OA评审流程状态，字典： am_oa_audit_workflow_business_type
     * ywlx	1	单一标类
     * ywlx	4	集合非标类
     * ywlx	0	单一非标类
     * ywlx	2	集合标类
     */
    public static final String OA_AUDIT_WORKFLOW_BIZ_TYPE_SINGLE_STANDARD = "1"; //单一标类
    public static final String OA_AUDIT_WORKFLOW_BIZ_TYPE_SINGLE_NONSTANDARD = "0"; //单一非标类


    /**
     * 账户开立状态字典编码
     */
    public static final String DICT_CODE_ACCOUNT_OPEN_STATUS = "am_account_open_status";

    /**
     * 追加提取，资金划拨类型，字典： am_capital_transfer_type
     */
    public static final String DICT_CODE_CAPITAL_TRANSFER_TYPE = "am_capital_transfer_type";

    public static final String TRANSFER_TYPE_WITHDRAWAL = "11";   //提取
    public static final String TRANSFER_TYPE_INCOME_DIVIDEND = "12";   //收益分配（非TA产品）
    public static final String TRANSFER_TYPE_CARRY = "13";   //业绩报酬支付（非TA产品）
    public static final String TRANSFER_TYPE_MANAGE_FEE = "14";   //管理费（非TA产品）
    public static final String TRANSFER_TYPE_CUSTODY_FEE = "15";   //托管费支付（非TA产品）

    public static final String TRANSFER_TYPE_BANK2SEC = "161";   //普通银转证，16开始的是四种：银证转账（普通银转证、普通证转银、两融银转证、两融证转银）
    public static final String TRANSFER_TYPE_SEC2BANK = "162";   //普通证转银
    public static final String TRANSFER_TYPE_BANK2CREDIT = "163";   //两融银转证
    public static final String TRANSFER_TYPE_CREDIT2BANK = "164";   //两融证转银

    public static final String TRANSFER_TYPE_FUTURE2BANK = "171";   //银期转账-银转期
    public static final String TRANSFER_TYPE_BANK2FUTURE = "172";   //银期转账-期转银
    public static final String TRANSFER_TYPE_CLOSE_CUSTODY = "18";   //托管账户销户结息
    public static final String TRANSFER_TYPE_CLOSE_NONE_CUSTODY = "19";   //非托管账户销户结息
    public static final String TRANSFER_TYPE_OPEN_ACCOUNT_FEE = "20";   //证券开户费支付—集合产品
    public static final String TRANSFER_TYPE_REPAYMENT = "21";   //自有垫资还款
    public static final String TRANSFER_TYPE_INCOME_SWAY_MARGIN = "22";   //收益互换保证金划付
    public static final String TRANSFER_TYPE_OTHER = "23";   //其他类型划款
    public static final String TRANSFER_TYPE_TAX_FEE = "24";   //税务费（非TA产品）

    //风控忽略的划款类型普通银转证、普通证转银、两融银转证、两融证转银, 提取、业绩报酬支付、收益分配、管理费税费支付、托管费支付、销户结息、证券开户费支付
    public static final List<String> RISK_CONTROL_IGNORE_TRANSFER_TYPE = ImmutableList.of(
            TRANSFER_TYPE_BANK2SEC,TRANSFER_TYPE_SEC2BANK,TRANSFER_TYPE_BANK2CREDIT,TRANSFER_TYPE_CREDIT2BANK,
            TRANSFER_TYPE_WITHDRAWAL,TRANSFER_TYPE_CARRY,TRANSFER_TYPE_INCOME_DIVIDEND,TRANSFER_TYPE_MANAGE_FEE,
            TRANSFER_TYPE_TAX_FEE,TRANSFER_TYPE_CUSTODY_FEE,TRANSFER_TYPE_CLOSE_CUSTODY,TRANSFER_TYPE_CLOSE_NONE_CUSTODY
            ,TRANSFER_TYPE_OPEN_ACCOUNT_FEE,TRANSFER_TYPE_REPAYMENT);

    //银期转账划款（银转期、期转银）划款完成后邮件抄送风控团队龚常琰、杨雅茜。
    public static final List<String> RISK_CONTROL_IGNORE_TRANSFER_TYPE_NOTIFY_SPECIAL = ImmutableList.of(
            TRANSFER_TYPE_FUTURE2BANK,TRANSFER_TYPE_BANK2FUTURE);
    /**
     * ABS划款类型，字典： am_capital_transfer_type
     */
    public static final String DICT_CODE_ABS_TRANSFER_TYPE = "am_abs_transfer_type";



    /**
     * 交易所：am_trade_exchange
     */
    public static final String TRADE_EXCHANGE_ND = "ND";   //日常
    public static final String TRADE_EXCHANGE_SSE = "SSE";   //上海交易所
    public static final String TRADE_EXCHANGE_NIB = "NIB";   //银行间


    /**
     * 日历向前/向后推算类型：am_trade_day_cal_type
     */
    public static final Integer TRADE_DAY_CAL_TYPE_BEFORE = -1;//向前推算
    public static final Integer TRADE_DAY_CAL_TYPE_AFTER = 1;//向后推算

    /**
     * 业绩报酬计提频率：am_carry_accural_frequency
     */
    public static final String CARRY_ACCURAL_FREQUENCY_HALF_YEAR = "1"; //6个月
    public static final String CARRY_ACCURAL_FREQUENCY_ONE_YEAR = "2"; //每年
    public static final String CARRY_ACCURAL_FREQUENCY_ONCE = "3"; //一次性
    public static final String CARRY_ACCURAL_FREQUENCY_TWO_YEAR = "4"; //两年

    /**
     * 时间段频率字典编码
     */
    public static final String DICT_CODE_PERIOD_FREQUENCY = "am_day_period_frequency";
    /**
     * 时间段单元字典编码
     */
    public static final String DICT_CODE_PERIOD_UNIT = "am_day_period_unit";
    /**
     * 时间段日期类型字典编码
     */
    public static final String DICT_CODE_BIZ_DAY_TYPE = "am_biz_day_type";
    /**
     * 费用类型字典编码
     */
    public static final String DICT_CODE_EXPENSE_TYPE = "am_expense_type";
    /**
     * 计提频率字典编码
     */
    public static final String DICT_CODE_ACCRUAL_FREQUENCY = "am_accrual_frequency";
    /**
     * 计提日字典编码
     */
    public static final String DICT_CODE_ACCRUAL_DAY = "am_accrual_day";
    /**
     * TA登记系统字典编码
     */
    public static final String DICT_CODE_PROD_TA_NO = "am_prod_ta_no";
    /**
     * TA产品状态字典编码
     */
    public static final String DICT_CODE_TA_PROD_STATUS = "am_ta_prod_status";
    /**
     * 两费支付提醒日字典编码
     */
    public static final String DICT_CODE_FEE_PAY_REMIND_DAY = "am_pay_remind_day";


    /**
     * 业绩报酬支付提醒日字典编码
     */
    public static final String DICT_CODE_REWARD_PAY_REMIND_DAY = "am_pay_remind_day2";

    /**
     * 两费及业绩报酬时间段起始日号
     */
    public static final String DICT_CODE_PERIOD_START_DAY_NO = "am_day_period_start_day_no";
    /**
     * 产品开放封闭运作方式字典编码
     */
    public static final String DICT_CODE_PROD_OPERATION_MODE = "am_prod_operation_mode";
    public static final String DICT_CODE_SETTLE_MODE = "am_settle_mode";
    public static final String DICT_CODE_LOCK_PERIOD_UNIT = "am_lock_period_unit";
    public static final String DICT_CODE_CLEAR_BAT_NO = "am_clear_bat_no";
    public static final String DICT_CODE_NET_VALUE_PRECISION_METHOD = "am_net_value_precision_method";
    /**
     * 预约赎回提醒类型字典编码
     */
    public static final String DICT_CODE_REDEMPTION_NEED_ORDER_TYPE = "am_redemption_need_order_type";
    public static final String REDEMPTION_NEED_ORDER_TYPE_COUNTER = "1"; //柜台系统控制预约赎回（有固定预约赎回起始规则）-多适用于集合类产品
    public static final String REDEMPTION_NEED_ORDER_TYPE_MANUAL = "2"; //手工控制预约赎回（无固定预约赎回起始规则）-多适用于单一进TA产品
    public static final String REDEMPTION_NEED_ORDER_TYPE_NONE = "3"; //无

    /**
     * 赎回开放类型字典编码
     */
    public static final String DICT_CODE_REDEMPTION_OPEN_TYPE = "am_redemption_open_type";

    /**
     * 开放期预约赎回开始结束日偏移
     */
    public static final String DICT_CODE_REDEMPTION_DATE_OFFSET = "am_openday_redemption_date_offset";


    /**
     * 支付时间段开始日类型 字典： am_fee_remind_day_period_start_type
     */
    public static final String DAY_PERIOD_START_TYPE_STARTUP = "10"; //成立日后
    public static final String DAY_PERIOD_START_TYPE_NEXT_MONTH = "11";//成立后次月
    public static final String DAY_PERIOD_START_TYPE_NEXT_QUARTER = "20";//成立后次季度
    public static final String DAY_PERIOD_START_TYPE_NEXT_YEAR = "31";//成立后满1年对日
    public static final String DAY_PERIOD_START_TYPE_LAST_DATE = "40";//上次提醒日后日期

    /**
     * 产品OA同步状态：am_product_oa_sync_status
     */
    public static final String OA_SYNC_NONE = "0";   //不需要同步OA
    public static final String OA_SYNC_NEED_CREATE = "1";   //新增产品OA评审中
    public static final String OA_SYNC_NEED_UPDATE = "2";   //待更新OA产品信息
    public static final String OA_SYNC_SUCCESS = "6";   //已成功同步至OA
    public static final String OA_SYNC_FAIL = "8";   //同步OA失败

    /**
     * 产品OA评审状态，字典： am_oa_audit_workflow_status
     */
    public static final String DICT_CODE_OA_PROD_AUDIT_STATUS = "am_oa_audit_workflow_status";

    /**
     * 产品OA评审状态：am_oa_audit_workflow_status
     */
    public static final String OA_PROD_AUDIT_STATUS_NO = "1";   //未发起评审流程
    public static final String OA_PROD_AUDIT_STATUS_GOING = "2";   //评审中
    public static final String OA_PROD_AUDIT_STATUS_PASS = "3";   //评审通过
    public static final String OA_PROD_AUDIT_STATUS_REJECT = "4";   //评审否决

    /**
     * 账户信息分类：am_account_internal_group
     */
    public static final String ACCOUNT_INTERNAL_GROUP_CUSTODY = "custody";                                           //托管账户
    public static final String ACCOUNT_INTERNAL_GROUP_MANAGE_FEE = "manageFee";                                      //管理费收入账户
    public static final String ACCOUNT_INTERNAL_GROUP_CUSTODY_FEE = "custodyFee";                                    //托管费收入账户
    public static final String ACCOUNT_INTERNAL_GROUP_ENTRUST = "entrust";                                           //单一产品委托人出入金账户信息
    public static final String ACCOUNT_INTERNAL_GROUP_BROKER = "broker";                                             //普通资金账户信息
    public static final String ACCOUNT_INTERNAL_GROUP_CREDIT_BROKER = "creditBroker";                                //信用资金账户信息
    public static final String ACCOUNT_INTERNAL_GROUP_TRADE_SEAT = "tradeSeat";                                      //普通交易单元信息
    public static final String ACCOUNT_INTERNAL_GROUP_SECURITIES = "securities";                                     //普通证券账户
    public static final String ACCOUNT_INTERNAL_GROUP_CREDIT_SECURITIES = "creditSecurities";                        //信用证券账户
    public static final String ACCOUNT_INTERNAL_GROUP_DERIVATIVE_SECURITIES = "derivativeSecurities";                //衍生品证券账户
    public static final String ACCOUNT_INTERNAL_GROUP_DEPOSIT = "deposit";                                           //银行存款账户信息
    public static final String ACCOUNT_INTERNAL_GROUP_PF = "pf";                                                     //公募基金账户信息
    public static final String ACCOUNT_INTERNAL_GROUP_PE = "pe";                                                     //私募基金账户信息
    public static final String ACCOUNT_INTERNAL_GROUP_BOND = "bond";                                                 //中债账户信息
    public static final String ACCOUNT_INTERNAL_GROUP_SH_CLEAR = "shClear";                                          //上清账户信息
    public static final String ACCOUNT_INTERNAL_GROUP_SH_BILL = "shBill";                                            //上海票交所账户信息
    public static final String ACCOUNT_INTERNAL_GROUP_FUTURE = "future";                                             //期货资金账户信息
    public static final String ACCOUNT_INTERNAL_GROUP_SETTLE = "settle";                                             //中登结算账户信息
    public static final String ACCOUNT_INTERNAL_GROUP_CREDIT_TRADE_SEAT = "creditTradeSeat";                         //信用交易单元信息
    public static final String ACCOUNT_INTERNAL_GROUP_NEW_STOCK_ISSUE = "newStockIssue";                             //新股网下配售


    /**
     * 投资追加提取工作流类型，字典： am_account_internal_group
     */
    public static final String DICT_CODE_ACCOUNT_INTERNAL_GROUP = "am_account_internal_group";

    public static Map<String, String> ACCOUNT_INTERNAL_GROUP_MAP = new HashMap<>();
    static {
        ACCOUNT_INTERNAL_GROUP_MAP.put(ACCOUNT_INTERNAL_GROUP_CUSTODY, Constant.CONFIG_KEY_ACCOUNT_INTERNAL_GROUP_CUSTODY);
        ACCOUNT_INTERNAL_GROUP_MAP.put(ACCOUNT_INTERNAL_GROUP_BROKER, Constant.CONFIG_KEY_ACCOUNT_INTERNAL_GROUP_BROKER);
        ACCOUNT_INTERNAL_GROUP_MAP.put(ACCOUNT_INTERNAL_GROUP_CREDIT_BROKER, Constant.CONFIG_KEY_ACCOUNT_INTERNAL_GROUP_CREDIT_BROKER);
        ACCOUNT_INTERNAL_GROUP_MAP.put(ACCOUNT_INTERNAL_GROUP_SECURITIES, Constant.CONFIG_KEY_ACCOUNT_INTERNAL_GROUP_SECURITIES);
        ACCOUNT_INTERNAL_GROUP_MAP.put(ACCOUNT_INTERNAL_GROUP_CREDIT_SECURITIES, Constant.CONFIG_KEY_ACCOUNT_INTERNAL_GROUP_CREDIT_SECURITIES);
        ACCOUNT_INTERNAL_GROUP_MAP.put(ACCOUNT_INTERNAL_GROUP_PF, Constant.CONFIG_KEY_ACCOUNT_INTERNAL_GROUP_PF);
        ACCOUNT_INTERNAL_GROUP_MAP.put(ACCOUNT_INTERNAL_GROUP_PE, Constant.CONFIG_KEY_ACCOUNT_INTERNAL_GROUP_PE);
        ACCOUNT_INTERNAL_GROUP_MAP.put(ACCOUNT_INTERNAL_GROUP_BOND, Constant.CONFIG_KEY_ACCOUNT_INTERNAL_GROUP_BOND);
        ACCOUNT_INTERNAL_GROUP_MAP.put(ACCOUNT_INTERNAL_GROUP_SH_CLEAR, Constant.CONFIG_KEY_ACCOUNT_INTERNAL_GROUP_SH_CLEAR);
        ACCOUNT_INTERNAL_GROUP_MAP.put(ACCOUNT_INTERNAL_GROUP_FUTURE, Constant.CONFIG_KEY_ACCOUNT_INTERNAL_GROUP_FUTURE);
    }

    public static Map<String, String> ACCOUNT_TYPE_SET_MAP = new HashMap<>();
    static {
        ACCOUNT_TYPE_SET_MAP.put(ACCOUNT_INTERNAL_GROUP_PF, "pfSet");
        ACCOUNT_TYPE_SET_MAP.put(ACCOUNT_INTERNAL_GROUP_PE, "peSet");
    }

    /**
     * 账户信息分类与账户开立节点通知信息类型对应关系
     */
    public static Map<String, String> ACCOUNT_TYPE_WORKFLOW_NODE_REMIND_TYPE_MAP = new HashMap<>();
    static {
        ACCOUNT_TYPE_WORKFLOW_NODE_REMIND_TYPE_MAP.put(ACCOUNT_INTERNAL_GROUP_BROKER, WORKFLOW_NODE_REMIND_TYPE_CAPITAL);
        ACCOUNT_TYPE_WORKFLOW_NODE_REMIND_TYPE_MAP.put(ACCOUNT_INTERNAL_GROUP_SECURITIES, WORKFLOW_NODE_REMIND_TYPE_SECURITY);
        ACCOUNT_TYPE_WORKFLOW_NODE_REMIND_TYPE_MAP.put(ACCOUNT_INTERNAL_GROUP_SH_CLEAR, WORKFLOW_NODE_REMIND_TYPE_SH_CLEAR);
        ACCOUNT_TYPE_WORKFLOW_NODE_REMIND_TYPE_MAP.put(ACCOUNT_INTERNAL_GROUP_BOND, WORKFLOW_NODE_REMIND_TYPE_BOND);
        ACCOUNT_TYPE_WORKFLOW_NODE_REMIND_TYPE_MAP.put(ACCOUNT_INTERNAL_GROUP_FUTURE, WORKFLOW_NODE_REMIND_TYPE_FUTURE);
    }

    /**
     * 产品TA代码： am_prod_ta_no
     */
    public static final String PROD_TA_NO_GLSC = "CB4";   //国联证券
    public static final String PROD_TA_NO_GLFW = "GLFW";   //国联服务
    public static final String PROD_TA_NO_SZ = "98";   //深市TA
    public static final String PROD_TA_NO_SH = "99";   //沪市TA
    public static final String PROD_TA_NONE = "0";   //无
    /**
     * 待办事项类型字典编码
     */
    public static final String TODO_TYPE = "am_todo_type";

    /**
     * 两费及业绩报酬计提支付提醒
     */
    public static final String FEE_CARRY_REMIND_TYPE = "am_fee_carry_remind_type";


    /**
     * 期货商，目前只有国联期货	，字典： am_future_company
     */
    public static final String DICT_CODE_FUTURE_COMPANY = "am_future_company";
    public static final String DICT_FUTURE_COMPANY_GL = "10"; //国联期货
    public static final String DICT_FUTURE_COMPANY_XZ = "11"; //兴证期货

    /**
     * 期货交易所列表		，字典： am_exchange_fut
     */
    public static final String DICT_CODE_EXCHANGE_FUTURE= "am_exchange_fut";
    public static final String DICT_CODE_EXCHANGE_FUTURE_CFFEX = "CFFEX"; //中金所
    public static final String DICT_CODE_EXCHANGE_FUTURE_DCE = "DCE"; //大商所
    public static final String DICT_CODE_EXCHANGE_FUTURE_CZCE = "CZCE"; //郑商所
    public static final String DICT_CODE_EXCHANGE_FUTURE_SHFE = "SHFE"; //上期所
    public static final String DICT_CODE_EXCHANGE_FUTURE_INE= "INE"; //上海国际能源交易中心

    public static final String DICT_CODE_ACCOUNT_FUTURE_EXCHANGE = "futureExchange"; //期货-交易所
    public static final String DICT_CODE_ACCOUNT_FUTURE_TRANSACTION_CODE = "futureTransactionCode"; //期货-交易所

    /**
     * 期货编码类型列表		，字典： am_future_tran_code_type
     */
    public static final String DICT_CODE_FUTURE_CODE_TYPE= "am_future_tran_code_type";

    /**
     * 期货分仓		，字典： am_sub_warehouse_fut
     */
    public static final String DICT_CODE_FUTURE_SUB_WAREHOUSE = "am_sub_warehouse_fut";
    /**
     * 期货投资类型		，字典： am_invest_type_fut
     */
    public static final String DICT_CODE_FUTURE_INVEST_TYPE = "am_invest_type_fut";

    /**
     * 北交所交易单元		，字典： am_neeq_trade_seat
     */
    public static final String DICT_CODE_NEED_TRADE_SEAT = "am_neeq_trade_seat";
    /**
     * 股转经纪商		    ，字典： am_security_broker
     */
    public static final String DICT_CODE_SECURITY_BROKER = "am_security_broker";

    public static final String DICT_CODE_CONTRACT_KEY_CLAUSE_TYPE = "am_contract_key_clause_type";
    public static final String DICT_CODE_CONTRACT_KEY_CLAUSE_TYPE_INVESTRANGE = "investRange";

    /**
     * 合同关键条款类别，字典： am_contract_key_clause_type
     */
    public static final String DICT_CODE_CONTRACT_KEY_CLAUSE_TYPE_MANAGEFEE = "manageFee";//管理费条款
    public static final String DICT_CODE_CONTRACT_KEY_CLAUSE_TYPE_CUSTODYFEE = "custodyFee";//托管费条款
    public static final String DICT_CODE_CONTRACT_KEY_CLAUSE_TYPE_CARRYFEE = "carryFee";//业绩报酬条款
    public static final String DICT_CODE_CONTRACT_KEY_CLAUSE_TYPE_OPEN_DAY = "openDay";//开放期条款
    public static final String DICT_CODE_CONTRACT_KEY_CLAUSE_TYPE_DIVIDEND = "dividend";//分红条款
    public static List<String> DICT_CODE_CONTRACT_KEY_CLAUSE_LIST = new ArrayList<>();

    static {
        DICT_CODE_CONTRACT_KEY_CLAUSE_LIST.add(DICT_CODE_CONTRACT_KEY_CLAUSE_TYPE_MANAGEFEE);
        DICT_CODE_CONTRACT_KEY_CLAUSE_LIST.add(DICT_CODE_CONTRACT_KEY_CLAUSE_TYPE_CUSTODYFEE);
        DICT_CODE_CONTRACT_KEY_CLAUSE_LIST.add(DICT_CODE_CONTRACT_KEY_CLAUSE_TYPE_CARRYFEE);
        DICT_CODE_CONTRACT_KEY_CLAUSE_LIST.add(DICT_CODE_CONTRACT_KEY_CLAUSE_TYPE_OPEN_DAY);
        DICT_CODE_CONTRACT_KEY_CLAUSE_LIST.add(DICT_CODE_CONTRACT_KEY_CLAUSE_TYPE_DIVIDEND);
    }

    public static final String CONTRACT_KEY_CLAUSE_TYPE_MANAGEFEE = "manageFeeClause";
    public static final String CONTRACT_KEY_CLAUSE_TYPE_CUSTODYFEE = "custodyFeeClause";
    public static final String CONTRACT_KEY_CLAUSE_TYPE_CARRYFEE = "carryFeeClause";
    public static final String CONTRACT_KEY_CLAUSE_TYPE_OPEN_DAY = "openDayClause";
    public static final String CONTRACT_KEY_CLAUSE_TYPE_DIVIDEND = "dividendClause";
    public static List<String> CONTRACT_KEY_CLAUSE_LIST = new ArrayList<>();


    /**
     * 合同关键条款类别转换对应Map
     */
    public static Map<String, String> KEY_CLAUSE_TYPE_MAP = new HashMap<>();
    static {
        CONTRACT_KEY_CLAUSE_LIST.add(CONTRACT_KEY_CLAUSE_TYPE_MANAGEFEE);
        CONTRACT_KEY_CLAUSE_LIST.add(CONTRACT_KEY_CLAUSE_TYPE_CUSTODYFEE);
        CONTRACT_KEY_CLAUSE_LIST.add(CONTRACT_KEY_CLAUSE_TYPE_CARRYFEE);
        CONTRACT_KEY_CLAUSE_LIST.add(CONTRACT_KEY_CLAUSE_TYPE_OPEN_DAY);
        CONTRACT_KEY_CLAUSE_LIST.add(CONTRACT_KEY_CLAUSE_TYPE_DIVIDEND);

        KEY_CLAUSE_TYPE_MAP.put(CONTRACT_KEY_CLAUSE_TYPE_MANAGEFEE, DICT_CODE_CONTRACT_KEY_CLAUSE_TYPE_MANAGEFEE);
        KEY_CLAUSE_TYPE_MAP.put(CONTRACT_KEY_CLAUSE_TYPE_CUSTODYFEE, DICT_CODE_CONTRACT_KEY_CLAUSE_TYPE_CUSTODYFEE);
        KEY_CLAUSE_TYPE_MAP.put(CONTRACT_KEY_CLAUSE_TYPE_CARRYFEE, CONTRACT_KEY_CLAUSE_TYPE_CARRYFEE);
        KEY_CLAUSE_TYPE_MAP.put(CONTRACT_KEY_CLAUSE_TYPE_OPEN_DAY, DICT_CODE_CONTRACT_KEY_CLAUSE_TYPE_OPEN_DAY);
        KEY_CLAUSE_TYPE_MAP.put(CONTRACT_KEY_CLAUSE_TYPE_DIVIDEND, CONTRACT_KEY_CLAUSE_TYPE_DIVIDEND);
    }

    /**
     * 两费及业绩报酬与合同条款费用类别对应Map
     */
    public static Map<String, String> REMIND_FEE_CARRY_KEY_CLAUSE_TYPE_MAP = new HashMap<>();
    static {
        REMIND_FEE_CARRY_KEY_CLAUSE_TYPE_MAP.put(EXPENSE_CARRY_TYPE_MANAGE, DICT_CODE_CONTRACT_KEY_CLAUSE_TYPE_MANAGEFEE);
        REMIND_FEE_CARRY_KEY_CLAUSE_TYPE_MAP.put(EXPENSE_CARRY_TYPE_CUSTODY, DICT_CODE_CONTRACT_KEY_CLAUSE_TYPE_CUSTODYFEE);
        REMIND_FEE_CARRY_KEY_CLAUSE_TYPE_MAP.put(EXPENSE_CARRY_TYPE_CARRY, DICT_CODE_CONTRACT_KEY_CLAUSE_TYPE_CARRYFEE);
    }

    public static Map<String, String> CONTRACT_KEY_CLAUSE_TYPE_MAP = new HashMap<>();
    static {
       CONTRACT_KEY_CLAUSE_TYPE_MAP.put(DICT_CODE_CONTRACT_KEY_CLAUSE_TYPE_INVESTRANGE, "投资范围");
       CONTRACT_KEY_CLAUSE_TYPE_MAP.put(DICT_CODE_CONTRACT_KEY_CLAUSE_TYPE_MANAGEFEE, "管理费条款");
       CONTRACT_KEY_CLAUSE_TYPE_MAP.put(DICT_CODE_CONTRACT_KEY_CLAUSE_TYPE_CUSTODYFEE, "托管费条款");
       CONTRACT_KEY_CLAUSE_TYPE_MAP.put(DICT_CODE_CONTRACT_KEY_CLAUSE_TYPE_CARRYFEE, "业绩报酬条款");
       CONTRACT_KEY_CLAUSE_TYPE_MAP.put(DICT_CODE_CONTRACT_KEY_CLAUSE_TYPE_OPEN_DAY, "开放期/追缴条款");
       CONTRACT_KEY_CLAUSE_TYPE_MAP.put(DICT_CODE_CONTRACT_KEY_CLAUSE_TYPE_DIVIDEND, "收益分配条款");
    }

    public static final String GATEWAY_SSO_PARAM_USERNAME = "userName";
    public static final String GATEWAY_SSO_PARAM_PASSWORD = "password";
    public static final String GATEWAY_SSO_PARAM_TOKEN = "token";
    public static final String GATEWAY_SSO_PARAM_SYSTEMID = "systemId";
    public static final Integer GATEWAY_CODE = 0;


    /**
     * 产品开放期年度月度任务类型字典 am_openday_todo_confirm_type
     */
    public static final String DICT_OPEN_DAY_TODO_TYPE_YEAR_FIRST = "1";//年度确认，首次
    public static final String DICT_OPEN_DAY_TODO_TYPE_MONTH_SECOND = "2";//月度确认，二次
    public static final String DICT_OPEN_DAY_TODO_TYPE_TEMP = "3";//当月临时确认
    public static final String DICT_OPEN_DAY_TODO_TYPE_EVERY_DAY = "EVERY_DAY";//虚拟项，每日开放


    /**
     * 开放期规则类型 字典： am_openday_rule_type
     */
    public static final String DICT_AM_OPEN_DAY_RULE_TYPE_FIX_DAY = "20";//指定日期，如指定周几、指定月日
    public static final String DICT_AM_OPEN_DAY_RULE_TYPE_N_DAY = "22";//特定日期前后N日
    public static final String DICT_AM_OPEN_DAY_RULE_TYPE_SP = "24";//特定周期内特定日期

    /**
     * 开放份额类型 字典： am_prod_share_type
     */
    public static final String DICT_AM_PROD_SHARE_TYPE_A = "A"; //A份额
    public static final String DICT_AM_PROD_SHARE_TYPE_B = "B"; //B份额
    public static final String DICT_AM_PROD_SHARE_TYPE_C = "C"; //C份额
    public static Map<String, String> AM_PROD_SHARE_TYPE_MAP = new HashMap<>();
    static {
        AM_PROD_SHARE_TYPE_MAP.put(DICT_AM_PROD_SHARE_TYPE_A, "A份额");
        AM_PROD_SHARE_TYPE_MAP.put(DICT_AM_PROD_SHARE_TYPE_B, "B份额");
        AM_PROD_SHARE_TYPE_MAP.put(DICT_AM_PROD_SHARE_TYPE_C, "C份额");
    }

    /**
     * 产品开放期 规则起始类型： am_openday_start_date_type
     */
    public static final String DICT_OPEN_DAY_START_DAY_TYPE_PROD_START_DATE = "10";//产品成立日
    public static final String DICT_OPEN_DAY_START_DAY_TYPE_CONTRACT_CHANGE_DATE = "20";//合同变更生效日
    public static final String DICT_OPEN_DAY_START_DAY_TYPE_FIRST_OPEN_DATE = "30";//首次开放日

    /**
     * 产品开放日类型： am_openday_day_type
     */
    public static final String DICT_OPEN_DAY_TYPE_FIRST_CONFIRM = "10";//待首次确认开放期
    public static final String DICT_OPEN_DAY_TYPE_SECOND_CONFIRM = "20";//待二次确认开放期
    public static final String DICT_OPEN_DAY_TYPE_TEMP = "30";//临时开放开放期
    public static final String DICT_OPEN_DAY_TYPE_FINAL = "99";//已经二次确认
    public static final String DICT_OPEN_DAY_TYPE_FIRST_OPEN = "12";//规则维护的首次开放日
    public static final String DICT_OPEN_DAY_TYPE_CONTRACT = "14";//规则维护的合同生效指定开放日
    public static final String DICT_OPEN_DAY_TYPE_MONTH = "MONTH_TODO";//虚拟，月度任务开放日，实际标识的是月度任务
    public static final String DICT_OPEN_DAY_TYPE_TEMP_ORIGIN = "31";//虚拟，临时开放期草稿，未经投资经理确认状态

    /**
     * 产品开放期规则，重复频率类型： am_openday_rule_frequency_type
     */
    public static final String DICT_OPEN_DAY_FREQUENCY_TYPE_EVERY_DAY = "10";//每日
    public static final String DICT_OPEN_DAY_FREQUENCY_TYPE_EVERY_WEEK = "11";//每周
    public static final String DICT_OPEN_DAY_FREQUENCY_TYPE_EVERY_MONTH = "23";//每月，即每N个月对月，且N=1
    public static final String DICT_OPEN_DAY_FREQUENCY_TYPE_EVERY_QUARTER = "12";//每自然季度
    public static final String DICT_OPEN_DAY_FREQUENCY_TYPE_EVERY_YEAR = "13";//每年
    public static final String DICT_OPEN_DAY_FREQUENCY_TYPE_N_MONTH = "20";//每N个月
    public static final String DICT_OPEN_DAY_FREQUENCY_TYPE_N_MONTH_FULL = "21";//每满N个月
    public static final String DICT_OPEN_DAY_FREQUENCY_TYPE_YEAR_FIX_DATE = "50";//每年固定时间

    /**
     * 周偏移： 字典：am_openday_week_offset
     */
//    public static final String DICT_OPEN_DAY_WEEK_OFFSET_EVERY="99";//每周
    public static final String DICT_OPEN_DAY_WEEK_OFFSET_1="1";//第1周
    public static final String DICT_OPEN_DAY_WEEK_OFFSET_2="2";//第2周
    public static final String DICT_OPEN_DAY_WEEK_OFFSET_LAST_1="-1";//倒数第1周
    public static final String DICT_OPEN_DAY_WEEK_OFFSET_LAST_2="-2";//倒数第2周

    /**
     * 每周周几列表 ，如周一、周二等 ，字典 :am_week_days
     */
    public static final String WEEK_MONDAY = "1";
    public static final String WEEK_TUESDAY = "2";
    public static final String WEEK_WEDNESDAY = "3";
    public static final String WEEK_THURSDAY = "4";
    public static final String WEEK_FRIDAY = "5";
    public static final String WEEK_SATURDAY = "6";
    public static final String WEEK_SUNDAY = "7";

    public static Map<String, Integer> MYSQL_WEEK_DAY_MAP = new HashMap<>();
    /*MY SQL周几的表达，DAYOFWEEK()
    *  2     ——>    星期一
       3     ——>    星期二
       4     ——>    星期三
       5     ——>    星期四
       6     ——>    星期五
       7     ——>    星期六
       1     ——>    星期日
    * */
    static {
        MYSQL_WEEK_DAY_MAP.put(WEEK_MONDAY, 2);
        MYSQL_WEEK_DAY_MAP.put(WEEK_TUESDAY, 3);
        MYSQL_WEEK_DAY_MAP.put(WEEK_WEDNESDAY, 4);
        MYSQL_WEEK_DAY_MAP.put(WEEK_THURSDAY, 5);
        MYSQL_WEEK_DAY_MAP.put(WEEK_FRIDAY, 6);
        MYSQL_WEEK_DAY_MAP.put(WEEK_SATURDAY, 7);
        MYSQL_WEEK_DAY_MAP.put(WEEK_SUNDAY, 1);
    }

    /**
     * 开放期开放单位 字典： am_openday_open_length_unit
     */
    public static final String DICT_OPEN_DAY_OPEN_LENGTH_UNIT_NATURAL_DAY = "10";//自然日
    public static final String DICT_OPEN_DAY_OPEN_LENGTH_UNIT_TRADE_DAY = "11";//交易日
    public static final String DICT_OPEN_DAY_OPEN_LENGTH_UNIT_WEEK = "20";//周
    public static final String DICT_OPEN_DAY_OPEN_LENGTH_UNIT_MONTH = "30";//月
    public static final String DICT_OPEN_DAY_OPEN_LENGTH_UNIT_QUARTER = "31";//季度
    public static final String DICT_OPEN_DAY_OPEN_LENGTH_UNIT_YEAR = "40";//年

    /**
     * 开放期 开放期业务类型 字典： am_openday_open_biz_type
     */
    public static final String DICT_CODE_OPEN_DAY_OPEN_BIZ = "am_openday_open_biz_type";

    public static final String DICT_OPEN_DAY_OPEN_BIZ_BOTH = "10";//申赎
    public static final String DICT_OPEN_DAY_OPEN_BIZ_PURCHASE = "20";//申购
    public static final String DICT_OPEN_DAY_OPEN_BIZ_REDEEM = "30";//赎回

    public static Map<String, String> OPEN_DAY_OPEN_BIZ_MAP = new HashMap<>();
    static {
        OPEN_DAY_OPEN_BIZ_MAP.put(DICT_OPEN_DAY_OPEN_BIZ_BOTH, "申购和赎回");
        OPEN_DAY_OPEN_BIZ_MAP.put(DICT_OPEN_DAY_OPEN_BIZ_PURCHASE, "申购");
        OPEN_DAY_OPEN_BIZ_MAP.put(DICT_OPEN_DAY_OPEN_BIZ_REDEEM, "赎回");
    }

    /**
     * 开放期开放规则类型字典： am_openday_rule_type
     */
    public static final String DICT_OPEN_DAY_RULE_TYPE_FIX_LENGTH = "10";//固定长度
    public static final String DICT_OPEN_DAY_OPEN_BIZ_FIX_DAY = "20";//固定日期
    public static final String DICT_OPEN_DAY_OPEN_BIZ_N_DAY = "22";//特定日期的前后N日
    public static final String DICT_OPEN_DAY_OPEN_BIZ_CYCLE_SPECIFIC_DAY = "22";//特定周期内的特定日期

    /**
     * 指定日期类型，月末、月初、周末、周初、季末、季初、第三个周三等 字典： am_openday_specify_day_type
     */
    public static final String DICT_OPEN_DAY_SPECIFY_DAY_MONTH_BEGIN = "10";//月初
    public static final String DICT_OPEN_DAY_SPECIFY_DAY_MONTH_END = "11";//月末
    public static final String DICT_OPEN_DAY_SPECIFY_DAY_QUARTER_BEGIN = "20";//季初
    public static final String DICT_OPEN_DAY_SPECIFY_DAY_QUARTER_END = "21";//季末
    public static final String DICT_OPEN_DAY_SPECIFY_DAY_WEEK_BEGIN = "30";//周初
    public static final String DICT_OPEN_DAY_SPECIFY_DAY_WEEK_END = "31";//周末
    public static final String DICT_OPEN_DAY_SPECIFY_DAY_WEEK_M_N = "WEEK_M_N";//第几周周几
    public static final String DICT_OPEN_DAY_SPECIFY_DAY_EVERY_WEEK = "EVERY_WEEK";//每周，不能出现WEEK_有特殊含义

    /**
     * 开放期节假日处理类型 字典： am_openday_holiday_handle
     */
    public static final String DICT_OPEN_DAY_HOLIDAY_HANDLE_DELAY = "1";//节假日顺延
    public static final String DICT_OPEN_DAY_HOLIDAY_HANDLE_CANCEL = "2";//节假日忽略
    public static final String DICT_OPEN_DAY_HOLIDAY_HANDLE_OPEN = "3";//节假日仍然开放

    /**
     * 投资经理管理_投资经理是否有效标志、是否有效：am_product_relation_effective_status
     */
    public static final String PROD_RELATION_EFFECTIVE_STATUS_NO = "N";//无效;
    public static final String PROD_RELATION_EFFECTIVE_STATUS_YES = "Y";//有效;

    /**
     * 批量上传附件到OA类型
     */
    public static final String BATCH_UPLOAD_TYPE_INVEST_WORKFLOW = "batchUploadTypeInvestWorkFlow";//划款、追加和预追加附件最终版批量上传OA;
    public static final String BATCH_UPLOAD_TYPE_ACCOUNT = "batchUploadTypeAccount";//开户资料相关附件批量上传OA;
    public static final String BATCH_UPLOAD_TYPE_REGISTER = "batchUploadTypeRegister";//备案函相关附件批量上传OA;
    public static final String BATCH_UPLOAD_TYPE_REPORT = "batchUploadTypeReport";//定期报告相关附件批量上传OA;

    /*
     * 账户类型与关联的账户开立回执类型映射
     * */
    public static Map<String, String> BATCH_UPLOAD_DOC_TYPE_UPLOAD_DIR_MAP = new HashMap();

    static {
        //单一产品目录
        BATCH_UPLOAD_DOC_TYPE_UPLOAD_DIR_MAP.put(PROD_TYPE_SINGLE + "_" + PROD_DOC_TYPE_CUSTODY, Constant.CONFIG_KEY_BATCH_UPLOAD_DIR_SINGLE_CUSTODY);
        BATCH_UPLOAD_DOC_TYPE_UPLOAD_DIR_MAP.put(PROD_TYPE_SINGLE + "_" + PROD_DOC_TYPE_SECURITY_ACCOUNT, Constant.CONFIG_KEY_BATCH_UPLOAD_DIR_SINGLE_SECURITY_ACCOUNT);
        BATCH_UPLOAD_DOC_TYPE_UPLOAD_DIR_MAP.put(PROD_TYPE_SINGLE + "_" + PROD_DOC_TYPE_BROKER_ACCOUNT, Constant.CONFIG_KEY_BATCH_UPLOAD_DIR_SINGLE_BROKER_ACCOUNT);
        BATCH_UPLOAD_DOC_TYPE_UPLOAD_DIR_MAP.put(PROD_TYPE_SINGLE + "_" + PROD_DOC_TYPE_CREDIT_ACCOUNT, Constant.CONFIG_KEY_BATCH_UPLOAD_DIR_SINGLE_SECURITY_ACCOUNT);
        BATCH_UPLOAD_DOC_TYPE_UPLOAD_DIR_MAP.put(PROD_TYPE_SINGLE + "_" + PROD_DOC_TYPE_PUB_FUND_ACCOUNT, Constant.CONFIG_KEY_BATCH_UPLOAD_DIR_SINGLE_FUND_ACCOUNT);
        BATCH_UPLOAD_DOC_TYPE_UPLOAD_DIR_MAP.put(PROD_TYPE_SINGLE + "_" + PROD_DOC_TYPE_INTERBANK_PBOC, Constant.CONFIG_KEY_BATCH_UPLOAD_DIR_SINGLE_INTERBANK_ACCOUNT);
        BATCH_UPLOAD_DOC_TYPE_UPLOAD_DIR_MAP.put(PROD_TYPE_SINGLE + "_" + PROD_DOC_TYPE_INTERBANK_BOND, Constant.CONFIG_KEY_BATCH_UPLOAD_DIR_SINGLE_INTERBANK_ACCOUNT);
        BATCH_UPLOAD_DOC_TYPE_UPLOAD_DIR_MAP.put(PROD_TYPE_SINGLE + "_" + PROD_DOC_TYPE_INTERBANK_SH_CLEAR, Constant.CONFIG_KEY_BATCH_UPLOAD_DIR_SINGLE_INTERBANK_ACCOUNT);
        BATCH_UPLOAD_DOC_TYPE_UPLOAD_DIR_MAP.put(PROD_TYPE_SINGLE + "_", Constant.CONFIG_KEY_BATCH_UPLOAD_DIR_SINGLE_OTHER_ACCOUNT);


        BATCH_UPLOAD_DOC_TYPE_UPLOAD_DIR_MAP.put(PROD_TYPE_SMALL_SET + "_" + PROD_DOC_TYPE_CUSTODY, Constant.CONFIG_KEY_BATCH_UPLOAD_DIR_SET_CUSTODY);
        BATCH_UPLOAD_DOC_TYPE_UPLOAD_DIR_MAP.put(PROD_TYPE_BIG_SET + "_" + PROD_DOC_TYPE_CUSTODY, Constant.CONFIG_KEY_BATCH_UPLOAD_DIR_SET_CUSTODY);
        BATCH_UPLOAD_DOC_TYPE_UPLOAD_DIR_MAP.put(PROD_TYPE_SMALL_SET + "_" + PROD_DOC_TYPE_SECURITY_ACCOUNT, Constant.CONFIG_KEY_BATCH_UPLOAD_DIR_SET_SECURITY_ACCOUNT);
        BATCH_UPLOAD_DOC_TYPE_UPLOAD_DIR_MAP.put(PROD_TYPE_BIG_SET + "_" + PROD_DOC_TYPE_SECURITY_ACCOUNT, Constant.CONFIG_KEY_BATCH_UPLOAD_DIR_SET_SECURITY_ACCOUNT);

        //集合产品普通资金账户和信用资金账户上传到普通证券账户OA系统目录里
        BATCH_UPLOAD_DOC_TYPE_UPLOAD_DIR_MAP.put(PROD_TYPE_SMALL_SET + "_" + PROD_DOC_TYPE_BROKER_ACCOUNT, Constant.CONFIG_KEY_BATCH_UPLOAD_DIR_SET_SECURITY_ACCOUNT);
        BATCH_UPLOAD_DOC_TYPE_UPLOAD_DIR_MAP.put(PROD_TYPE_BIG_SET + "_" + PROD_DOC_TYPE_BROKER_ACCOUNT, Constant.CONFIG_KEY_BATCH_UPLOAD_DIR_SET_SECURITY_ACCOUNT);
        BATCH_UPLOAD_DOC_TYPE_UPLOAD_DIR_MAP.put(PROD_TYPE_SMALL_SET + "_" + PROD_DOC_TYPE_CREDIT_ACCOUNT, Constant.CONFIG_KEY_BATCH_UPLOAD_DIR_SET_SECURITY_ACCOUNT);
        BATCH_UPLOAD_DOC_TYPE_UPLOAD_DIR_MAP.put(PROD_TYPE_BIG_SET + "_" + PROD_DOC_TYPE_CREDIT_ACCOUNT, Constant.CONFIG_KEY_BATCH_UPLOAD_DIR_SET_SECURITY_ACCOUNT);

        BATCH_UPLOAD_DOC_TYPE_UPLOAD_DIR_MAP.put(PROD_TYPE_SMALL_SET + "_" + PROD_DOC_TYPE_PUB_FUND_ACCOUNT, Constant.CONFIG_KEY_BATCH_UPLOAD_DIR_SET_FUND_ACCOUNT);
        BATCH_UPLOAD_DOC_TYPE_UPLOAD_DIR_MAP.put(PROD_TYPE_BIG_SET + "_" + PROD_DOC_TYPE_PUB_FUND_ACCOUNT, Constant.CONFIG_KEY_BATCH_UPLOAD_DIR_SET_FUND_ACCOUNT);

        BATCH_UPLOAD_DOC_TYPE_UPLOAD_DIR_MAP.put(PROD_TYPE_SMALL_SET + "_" + PROD_DOC_TYPE_INTERBANK_PBOC, Constant.CONFIG_KEY_BATCH_UPLOAD_DIR_SET_INTERBANK);
        BATCH_UPLOAD_DOC_TYPE_UPLOAD_DIR_MAP.put(PROD_TYPE_BIG_SET + "_" + PROD_DOC_TYPE_INTERBANK_PBOC, Constant.CONFIG_KEY_BATCH_UPLOAD_DIR_SET_INTERBANK);
        BATCH_UPLOAD_DOC_TYPE_UPLOAD_DIR_MAP.put(PROD_TYPE_SMALL_SET + "_" + PROD_DOC_TYPE_INTERBANK_BOND, Constant.CONFIG_KEY_BATCH_UPLOAD_DIR_SET_INTERBANK);
        BATCH_UPLOAD_DOC_TYPE_UPLOAD_DIR_MAP.put(PROD_TYPE_BIG_SET + "_" + PROD_DOC_TYPE_INTERBANK_BOND, Constant.CONFIG_KEY_BATCH_UPLOAD_DIR_SET_INTERBANK);
        BATCH_UPLOAD_DOC_TYPE_UPLOAD_DIR_MAP.put(PROD_TYPE_SMALL_SET + "_" + PROD_DOC_TYPE_INTERBANK_SH_CLEAR, Constant.CONFIG_KEY_BATCH_UPLOAD_DIR_SET_INTERBANK);
        BATCH_UPLOAD_DOC_TYPE_UPLOAD_DIR_MAP.put(PROD_TYPE_BIG_SET + "_" + PROD_DOC_TYPE_INTERBANK_SH_CLEAR, Constant.CONFIG_KEY_BATCH_UPLOAD_DIR_SET_INTERBANK);
        BATCH_UPLOAD_DOC_TYPE_UPLOAD_DIR_MAP.put(PROD_TYPE_SMALL_SET + "_", Constant.CONFIG_KEY_BATCH_UPLOAD_DIR_SET_OTHER_ACCOUNT);
        BATCH_UPLOAD_DOC_TYPE_UPLOAD_DIR_MAP.put(PROD_TYPE_BIG_SET + "_", Constant.CONFIG_KEY_BATCH_UPLOAD_DIR_SET_OTHER_ACCOUNT);
    }


    /**
     * 日历类型，交易日日历、自然日日历 字典：am_openday_calendar_type
     */
    public static final String AM_OPENDAY_CALENDAR_TYPE_TRADE_DAY = "1"; //交易日日历
    public static final String AM_OPENDAY_CALENDAR_TYPE_NATURAL_DAY = "2"; //自然日日历

    /**
     * 产品运作方式 字典：am_prod_operation_mode
     */
    public static final String DICT_OPERATION_MODE_CLOSED = "10"; //纯封闭式
    public static final String DICT_OPERATION_MODE_OPEN= "20"; //纯开放式
    public static final String DICT_OPERATION_MODE_CLOSED_CAN_ADD= "30"; //封闭式有追缴条款
    public static final String DICT_OPERATION_MODE_OPEN_WITH_CLOSED_PERIOD= "40"; //开放式有封闭期

    /**
     * 开放期投资经理确认状态，字典 am_openday_invest_manager_confirm_status
     */
    public static final String DICT_OPEN_DAY_INVEST_CONFIRM = "am_openday_invest_manager_confirm_status";
    public static final String DICT_OPEN_DAY_INVEST_CONFIRM_READY = "90";//待投资经理流程准备状态
    public static final String DICT_OPEN_DAY_INVEST_CONFIRM_CANCEL = "91";//撤回
    public static final String DICT_OPEN_DAY_INVEST_CONFIRM_NEED = "1";//待投资经理确认
    public static final String DICT_OPEN_DAY_INVEST_CONFIRM_FINISH = "2";//投资经理已经确认
    public static final String DICT_OPEN_DAY_INVEST_CONFIRM_REJECT = "3";//投资经理驳回

    public static final String DICT_OPEN_DAY_INVEST_CONFIRM_NOTICE_SERVICE = "10";//资管交易服务组 -待操作
    public static final String DICT_OPEN_DAY_INVEST_CONFIRM_NOTICE_OP = "11";//运营存续期管理岗-待操作
    public static final String DICT_OPEN_DAY_INVEST_CONFIRM_COMPLIANCE = "20";//合规待审核
    public static final String DICT_OPEN_DAY_INVEST_CONFIRM_PUBLISH = "30";//信息披露岗待操作
    public static final String DICT_OPEN_DAY_INVEST_CONFIRM_NOTICE_SERVICE_DIVIDEND = "50";//资管交易服务组（收益分配公告）
    public static final String DICT_OPEN_DAY_INVEST_CONFIRM_NOTICE_OP_DIVIDEND = "51";//运营存续期管理岗（收益分配公告）
    public static final String DICT_OPEN_DAY_INVEST_CONFIRM_COMPLIANCE_DIVIDEND = "60";//合规审核收益分配公告（收益分配公告）
    public static final String DICT_OPEN_DAY_INVEST_CONFIRM_PUBLISH_DIVIDEND = "70";//信息披露岗发布（收益分配公告）

    public static final String DICT_OPEN_DAY_INVEST_CONFIRM_MORE_TODO = "40";//FA、资金岗、TA待处理
    public static final String DICT_OPEN_DAY_INVEST_CONFIRM_END = "99";//投资经理确认以及后续TA设置、(待TA设置完成后）
    public static final String DICT_OPEN_DAY_INVEST_CONFIRM_TA = "CONFIRM_TA";//虚拟，TA待确认
    public static final String DICT_OPEN_DAY_INVEST_CONFIRM_FA = "CONFIRM_FA";//虚拟，FA待确认

    /**
     * 开放期确认工作流状态，节点及对应处理人角色，多个角色可审核则逗号分割
     */
    public static HashMap<String, String> OPEN_DAY_INVEST_CONFIRM_STATUS_ROLE_MAP = new HashMap<>();

    static {//节点与任务处理人映射，如果多个角色，则逗号分割
        OPEN_DAY_INVEST_CONFIRM_STATUS_ROLE_MAP.put(DictConstant.DICT_OPEN_DAY_INVEST_CONFIRM_NEED, "#INVEST_MANAGER");
        OPEN_DAY_INVEST_CONFIRM_STATUS_ROLE_MAP.put(DictConstant.DICT_OPEN_DAY_INVEST_CONFIRM_FINISH, "#NONE");
        OPEN_DAY_INVEST_CONFIRM_STATUS_ROLE_MAP.put(DictConstant.DICT_OPEN_DAY_INVEST_CONFIRM_REJECT, "#MARKET_MANAGER");
        OPEN_DAY_INVEST_CONFIRM_STATUS_ROLE_MAP.put(DictConstant.DICT_OPEN_DAY_INVEST_CONFIRM_NOTICE_SERVICE, "定制策略组存续期管理岗");
        OPEN_DAY_INVEST_CONFIRM_STATUS_ROLE_MAP.put(DictConstant.DICT_OPEN_DAY_INVEST_CONFIRM_NOTICE_OP, "资管运营存续期管理岗");
        OPEN_DAY_INVEST_CONFIRM_STATUS_ROLE_MAP.put(DictConstant.DICT_OPEN_DAY_INVEST_CONFIRM_COMPLIANCE, "资产管理部合规岗");
        OPEN_DAY_INVEST_CONFIRM_STATUS_ROLE_MAP.put(DictConstant.DICT_OPEN_DAY_INVEST_CONFIRM_PUBLISH, "信息披露岗");
        OPEN_DAY_INVEST_CONFIRM_STATUS_ROLE_MAP.put(DictConstant.DICT_OPEN_DAY_INVEST_CONFIRM_MORE_TODO, "运管TA组,估值基金会计岗,估值资金岗");
        OPEN_DAY_INVEST_CONFIRM_STATUS_ROLE_MAP.put(DictConstant.DICT_OPEN_DAY_INVEST_CONFIRM_CANCEL, "#MARKET_MANAGER");

        OPEN_DAY_INVEST_CONFIRM_STATUS_ROLE_MAP.put(DictConstant.DICT_OPEN_DAY_INVEST_CONFIRM_NOTICE_SERVICE_DIVIDEND, "定制策略组存续期管理岗");
        OPEN_DAY_INVEST_CONFIRM_STATUS_ROLE_MAP.put(DictConstant.DICT_OPEN_DAY_INVEST_CONFIRM_NOTICE_OP_DIVIDEND, "资管运营存续期管理岗");
        OPEN_DAY_INVEST_CONFIRM_STATUS_ROLE_MAP.put(DictConstant.DICT_OPEN_DAY_INVEST_CONFIRM_COMPLIANCE_DIVIDEND, "资产管理部合规岗");
        OPEN_DAY_INVEST_CONFIRM_STATUS_ROLE_MAP.put(DictConstant.DICT_OPEN_DAY_INVEST_CONFIRM_PUBLISH_DIVIDEND, "信息披露岗");
    }

    /**
     * 投资追加提取工作流状态及对应处理人角色，多个角色可审核则逗号分割
     */
    public static HashMap<String, List<String>> OPEN_DAY_CONFIRM_WORKFLOW_NODE_DOC_MAP = new HashMap<>();

    static {//节点与可编辑的文件类型关联
        OPEN_DAY_CONFIRM_WORKFLOW_NODE_DOC_MAP.put(DictConstant.DICT_OPEN_DAY_INVEST_CONFIRM_READY, Arrays.asList(DictConstant.PROD_DOC_TYPE_OPEN_DAY_FILE));
        OPEN_DAY_CONFIRM_WORKFLOW_NODE_DOC_MAP.put(DictConstant.DICT_OPEN_DAY_INVEST_CONFIRM_CANCEL, Arrays.asList(DictConstant.PROD_DOC_TYPE_OPEN_DAY_FILE));
        OPEN_DAY_CONFIRM_WORKFLOW_NODE_DOC_MAP.put(DictConstant.DICT_OPEN_DAY_INVEST_CONFIRM_REJECT, Arrays.asList(DictConstant.PROD_DOC_TYPE_OPEN_DAY_FILE));


        //上传公告节点：可以上传收益分配预告、开放期公告
        OPEN_DAY_CONFIRM_WORKFLOW_NODE_DOC_MAP.put(DictConstant.DICT_OPEN_DAY_INVEST_CONFIRM_NOTICE_SERVICE, Arrays.asList(DictConstant.PROD_DOC_TYPE_OPEN_DAY_NOTICE_FILE, DictConstant.PROD_DOC_TYPE_DIVIDEND_PRE_NOTICE));
        OPEN_DAY_CONFIRM_WORKFLOW_NODE_DOC_MAP.put(DictConstant.DICT_OPEN_DAY_INVEST_CONFIRM_NOTICE_OP, Arrays.asList(DictConstant.PROD_DOC_TYPE_OPEN_DAY_NOTICE_FILE, DictConstant.PROD_DOC_TYPE_DIVIDEND_PRE_NOTICE));


        //收益分配正式公告上传节点：只允许上传收益分配公告
        OPEN_DAY_CONFIRM_WORKFLOW_NODE_DOC_MAP.put(DictConstant.DICT_OPEN_DAY_INVEST_CONFIRM_NOTICE_SERVICE_DIVIDEND, Arrays.asList(DictConstant.PROD_DOC_TYPE_DIVIDEND_NOTICE));
        OPEN_DAY_CONFIRM_WORKFLOW_NODE_DOC_MAP.put(DictConstant.DICT_OPEN_DAY_INVEST_CONFIRM_NOTICE_OP_DIVIDEND, Arrays.asList(DictConstant.PROD_DOC_TYPE_DIVIDEND_NOTICE));
    }

    /**
     * 开放期流程节点审核类型
     */
    public static final String DICT_OPEN_DAY_INVEST_CONFIRM_AUDIT_PASS = "1";//通过
    public static final String DICT_OPEN_DAY_INVEST_CONFIRM_AUDIT_REJECT = "2";//驳回
    public static final String DICT_OPEN_DAY_INVEST_CONFIRM_AUDIT_MORE_TODO_FINISH = "3";//TA、FA设置完成
    public static final String DICT_OPEN_DAY_INVEST_CONFIRM_AUDIT_CANCEL = "4";//取消
    public static final String DICT_OPEN_DAY_INVEST_CONFIRM_AUDIT_DELETE = "5";//删除


    public static Map<String, String> OPEN_DAY_INVEST_CONFIRM_AUDIT_TYPE_MAP = new HashMap<>();
    static {
        OPEN_DAY_INVEST_CONFIRM_AUDIT_TYPE_MAP.put(DICT_OPEN_DAY_INVEST_CONFIRM_AUDIT_PASS, "通过");
        OPEN_DAY_INVEST_CONFIRM_AUDIT_TYPE_MAP.put(DICT_OPEN_DAY_INVEST_CONFIRM_AUDIT_REJECT, "驳回");
        OPEN_DAY_INVEST_CONFIRM_AUDIT_TYPE_MAP.put(DICT_OPEN_DAY_INVEST_CONFIRM_AUDIT_MORE_TODO_FINISH, "TA设置完成");
        OPEN_DAY_INVEST_CONFIRM_AUDIT_TYPE_MAP.put(DICT_OPEN_DAY_INVEST_CONFIRM_AUDIT_CANCEL, "取消");
        OPEN_DAY_INVEST_CONFIRM_AUDIT_TYPE_MAP.put(DICT_OPEN_DAY_INVEST_CONFIRM_AUDIT_DELETE, "删除");
    }

    /**
     * 开放期TA每日提醒Excel内容---T日、T+1日申购赎回状态
     */
    public static final String OPEN_DAY_TA_STATUS_OPEN = "0";
    public static final String OPEN_DAY_TA_STATUS_PURCHASE_SUSPEND = "1";
    public static final String OPEN_DAY_TA_STATUS_REDEEM_SUSPEND = "2";

    public static Map<String, String> OPEN_DAY_TA_STATUS_BIZ_MAP = new HashMap<>();
    static {
        OPEN_DAY_TA_STATUS_BIZ_MAP.put(OPEN_DAY_TA_STATUS_OPEN, "正常开放");
        OPEN_DAY_TA_STATUS_BIZ_MAP.put(OPEN_DAY_TA_STATUS_PURCHASE_SUSPEND, "暂停申购");
        OPEN_DAY_TA_STATUS_BIZ_MAP.put(OPEN_DAY_TA_STATUS_REDEEM_SUSPEND, "暂停赎回");
    }

    /**
     * 虚拟字典CODE 默认虚拟字典以vdict开头，可以在这里扩展
     */
    public static final String DICT_V_SYSTEM_ID = "vdict_system_id";//系统清单之系统编码
    public static final String DICT_V_GITEE_PROGRAM_ID = "vdict_gitee_program_id";//系统清单之系统Gitee清单

    /**
     * 关联关系审核确认状态 字典 am_product_relation_audit_status
     */
    public static final String PRODUCT_RELATION_AUDIT_STATUS_PASS = "2"; //2-已经确认


    /**
     * 是否同步至资管档案系统标志 字典：am_sync_oa_report_status
     */
    public static final String SYNC_OA_REPORT_STATUS_NO = "N";//未同步;
    public static final String SYNC_OA_REPORT_STATUS_YES = "Y";// "已同步";

    /**
     * 审核状态 字典：am_disclosure_audit_status
     */
    public static final String DISCLOSURE_AUDIT_STATUS_PENDING = "1";// "待审核";
    public static final String DISCLOSURE_AUDIT_STATUS_PASS = "2";// "审核通过";
    public static final String DISCLOSURE_AUDIT_STATUS_REJECT = "3";// "审核退回";

    /**
     * 产品中心柜台交易状态 字典：prodcenter_prod_status
     *     @Column(name = "prod_status")
     *     @ApiModelProperty(value = "产品状态 1=开放期 2=认购期 3=预约认购期 4=产品成立 5=产品终止 6=停止交易 7=停止申购 8=停止赎回")
     */
    public static final String DICT_PRODCENTER_PROD_STATUS_OPEN= "1"; //正常开放：开放申购和赎回
    public static final String DICT_PRODCENTER_PROD_STATUS_SUBSCRIBE= "2"; //认购期
    public static final String DICT_PRODCENTER_PROD_STATUS_SUBSCRIBE_PRE = "3"; //认购期
    public static final String DICT_PRODCENTER_PROD_STATUS_PROD_START = "4"; //产品成立
    public static final String DICT_PRODCENTER_PROD_STATUS_PROD_END = "5"; //产品终止
    public static final String DICT_PRODCENTER_PROD_STATUS_STOP_TRADE = "6"; //停止交易：停止开放、停止赎回
    public static final String DICT_PRODCENTER_PROD_STATUS_STOP_PURCHASE = "7"; //暂停申购：即开放赎回，停止申购
    public static final String DICT_PRODCENTER_PROD_STATUS_STOP_REDEEM= "8"; //暂停赎回：即开放申购，停止赎回

    public static Map<String, String> OPEN_DAY_PRODCENTER_PROD_STATUS_MAP = new HashMap<>();

    static {
        OPEN_DAY_PRODCENTER_PROD_STATUS_MAP.put(DICT_PRODCENTER_PROD_STATUS_OPEN, "正常开放");
        OPEN_DAY_PRODCENTER_PROD_STATUS_MAP.put(DICT_PRODCENTER_PROD_STATUS_SUBSCRIBE, "认购期");
        OPEN_DAY_PRODCENTER_PROD_STATUS_MAP.put(DICT_PRODCENTER_PROD_STATUS_SUBSCRIBE_PRE, "预约认购期");
        OPEN_DAY_PRODCENTER_PROD_STATUS_MAP.put(DICT_PRODCENTER_PROD_STATUS_PROD_START, "产品成立");
        OPEN_DAY_PRODCENTER_PROD_STATUS_MAP.put(DICT_PRODCENTER_PROD_STATUS_PROD_END, "产品终止");
        OPEN_DAY_PRODCENTER_PROD_STATUS_MAP.put(DICT_PRODCENTER_PROD_STATUS_STOP_TRADE, "停止交易");
        OPEN_DAY_PRODCENTER_PROD_STATUS_MAP.put(DICT_PRODCENTER_PROD_STATUS_STOP_PURCHASE, "暂停申购");
        OPEN_DAY_PRODCENTER_PROD_STATUS_MAP.put(DICT_PRODCENTER_PROD_STATUS_STOP_REDEEM, "暂停赎回");
    }

    /**
     * 网关请求参数类型
     */
    public static final String GATEWAY_REQUEST_PARAM_ROLE_NAME = "amprod.role";//查询资管产品系统定义的角色人员
    public static final String GATEWAY_REQUEST_PARAM_PROD_MANAGER = "amprod.prodPerson.prodManager";//查询资管产品系统定义的产品经理
    public static final String GATEWAY_REQUEST_PARAM_MARKET_MANAGER = "amprod.prodPerson.marketManager";//查询资管产品系统定义的市场经理
    public static final String GATEWAY_REQUEST_PARAM_INVEST_MANAGER = "amprod.prodPerson.investManager";//查询资管产品系统定义的投资经理
    public static final String GATEWAY_REQUEST_PARAM_INVEST_ASSITANT_MANAGER = "amprod.prodPerson.investAssitantManager";//查询资管产品系统定义的投资助理
    public static final String GATEWAY_REQUEST_PARAM_INVEST_AND_ASSITANT_MANAGER = "amprod.prodPerson.investAndAssitantManager";//查询资管产品系统定义的投资经理和投资助理
    public static final Integer PROD_CENTER_SUCCESS_CODE = 10000;


    /*
     * 产品新设流程节点状态: TODO 特别注意，新增加节点，需要指定节点任务通知的类型 ProdStartupRemindBeforeService.nodeTypeMap的配置
     * */
    public static String FLOWABLE_STARTUP_NODE_BEGIN = "beginTask";//name="草稿"
    public static String FLOWABLE_STARTUP_NODE_START = "fqslTask";//name="发起"
    public static String FLOWABLE_STARTUP_NODE_BASIC_PARAM = "cswhTask";//name="基本参数维护"
    public static String FLOWABLE_STARTUP_NODE_BASIC_PARAM_AUDIT = "csfhTask";//name="基础信息维护复核"
    public static String FLOWABLE_STARTUP_NODE_BEFORE_COLLECT = "beforeCollectTask";// name="募集前运营衔接"
    public static String FLOWABLE_STARTUP_NODE_SETUP = "setupTask";//name="成立运营衔接"
    public static String FLOWABLE_STARTUP_NODE_ARCHIVE = "clgdTask";// name="最终材料归档"
    public static String FLOWABLE_STARTUP_NODE_RISK_MANAGE = "afterYYfkTask";// 风控节点，指定主动、服务类
    public static String FLOWABLE_STARTUP_NODE_MODIFY_RAISE_DATE = "beforeYYxgmjqTask";// 修改募集期
    public static String FLOWABLE_STARTUP_NODE_SERVICE_PROD_ASSIGN = "zdTask";// 服务类产品指定处理人
    public static String FLOWABLE_STARTUP_NODE_AFTER_FA = "afterYYgz2Task";// 估值系统建账
    public static String FLOWABLE_STARTUP_NODE_BEFORE_TA = "beforeYYtaTask";// 募集前TA参数设置
    public static String FLOWABLE_STARTUP_NODE_REMIND_WEALTH = "newProdRemindWealthTask";// 新产品发行财富代销通知流程
    public static String FLOWABLE_STARTUP_NODE_BEFORE_CAPITAL = "beforeYYyyzjTask";// 运营资金发行信息
    public static String FLOWABLE_STARTUP_NODE_BEFORE_OPEN_RULE = "whkfqTask";// 募集前开放期规则维护
    public static String FLOWABLE_STARTUP_NODE_BEFORE_E_CONTRACT = "beforeYYdzhtTask";// 募集前电子合同配置
    public static String FLOWABLE_STARTUP_NODE_CUSTODY_ACCOUNT = "tghklTask";// 托管户开立节点
    public static String FLOWABLE_STARTUP_NODE_BEFORE_UPLOAD_FILE = "beforeYYbyfjTask";// 募集前必要附件上传
    public static String FLOWABLE_STARTUP_NODE_AFTER_RAISE_UPLOAD_FILE = "afterYYbyfj2Task";// 募集结束成立必要附件上传
    public static String FLOWABLE_STARTUP_NODE_BEFORE_APP_CONFIG = "sjsjTask";// 募集前：上架手机APP
    public static String FLOWABLE_STARTUP_NODE_BEFORE_RAISE_START = "qrmjksrTask";// 确认募集开始日
    public static String FLOWABLE_STARTUP_NODE_BEFORE_RAISE_END = "qrmjjsrTask";// 确认募集结束日
    public static String FLOWABLE_STARTUP_NODE_BEFORE_DISCLOSURE = "beforeYYxpTask"; //募集前信披相关准备

    public static String FLOWABLE_STARTUP_NODE_NON_STANDARD_ASSET = "nonStandardAssetTask"; //投资非标资产确认
    public static String FLOWABLE_STARTUP_NODE_PREPARE_REGISTER = "afterYYxp2Task"; //信披备案准备相关准备
    public static String FLOWABLE_STARTUP_NODE_BEFORE_RAISE_DATE_MAINTAIN = "qryjTask"; //募集期维护节点（预计募集期维护）
    public static String FLOWABLE_STARTUP_NODE_ENTRUST_ACCOUNT = "crjwhTask"; //出入金账户维护、客户初始构成比例输入（单一产品，存续期管理岗；客户初始购买比例）
    public static String FLOWABLE_STARTUP_NODE_AML = "fxqTask"; //反洗钱资料上传
    public static String FLOWABLE_STARTUP_NODE_INVESTOR_CHECK = "tzzctTask"; //投资者穿透
    public static String FLOWABLE_STARTUP_NODE_MODIFY_RAISE_DATE_NOTICE = "xgggTask"; //上传募集修改公告
    public static String FLOWABLE_STARTUP_NODE_MODIFY_FINISH_REGISTER = "bawcTask"; //备案完成
    public static String FLOWABLE_STARTUP_NODE_MODIFY_RAISE_DATE_TA = "ta2Task"; //TA募集期维护
    public static String FLOWABLE_STARTUP_NODE_MODIFY_RAISE_DATE_DISCLOSURE = "xpgwTask"; //信披挂网
    public static String FLOWABLE_STARTUP_NODE_AFTER_O32 = "afterYYo32Task"; //账管O32设立准备
    public static String FLOWABLE_STARTUP_NODE_AFTER_TA = "afterYYta3Task"; //TA募集结束
    public static String FLOWABLE_STARTUP_NODE_AFTER_CAPITAL = "afterYYyyzj2Task"; //运营资金募集结束
    public static String FLOWABLE_STARTUP_NODE_AFTER_COP = "afterYYcopTask"; //COP系统维护
    public static String FLOWABLE_STARTUP_NODE_SALE_CONTRACT = "dxxyTask"; //市场经理上传代销协议
    public static String FLOWABLE_STARTUP_NODE_MODIFY_APP_CONFIG = "sjsjxgTask"; //上架时间修改
    public static String FLOWABLE_STARTUP_NODE_WIND_SHOW = "isWindTask"; //产品是否Wind展示
    public static String FLOWABLE_STARTUP_NODE_REGISTER_UPLOAD_FILE = "babgTask"; //备案附件
    public static String FLOWABLE_STARTUP_ASSIGN_OP_MANAGER = "zdyyjlTask";//"指定运营经理"
    public static String FLOWABLE_STARTUP_O32_STARTUP_CAPITAL = "clkszTask";//"单一产品，O32成立款上账"
    public static String FLOWABLE_STARTUP_PORTFOLIO_MANAGER = "csszTask";//组合经理参数设置


    /*
     * 投顾产品新设流程节点状态
     * */
    public static String FLOWABLE_STARTUP_INV_NODE_RAISE_START = "raiseStartTask"; //募集开始日
    public static String FLOWABLE_STARTUP_INV_NODE_RAISE_END = "raiseEndTask"; //募集结束日
    public static String FLOWABLE_STARTUP_INV_NODE_RAISE_SCALE= "raiseScaleTask"; //维护募集规模
    public static String FLOWABLE_STARTUP_INV_NODE_SALE_CONTRACT = "saleContractTask"; //上传投顾协议
    public static String FLOWABLE_STARTUP_INV_NODE_RISK_CONTROL = "riskControlTask"; //风控确认权限
    public static String FLOWABLE_STARTUP_INV_NODE_O32 = "o32Task"; //发起O32设立流程
    public static String FLOWABLE_STARTUP_INV_RAISE_DATE_MODIFY = "raiseDateModifyTask"; //发行计划变更

    //新设附件上传各节点，按节点排序
    public static Map<String, String> FLOWABLE_STARTUP_DOC_UPLOAD_MAP = new LinkedHashMap<>();
    static {
        FLOWABLE_STARTUP_DOC_UPLOAD_MAP.put(FLOWABLE_STARTUP_NODE_BEFORE_UPLOAD_FILE, "补充募集前必要附件");
        FLOWABLE_STARTUP_DOC_UPLOAD_MAP.put(FLOWABLE_STARTUP_NODE_AFTER_RAISE_UPLOAD_FILE, "补传成立必要附件");
        FLOWABLE_STARTUP_DOC_UPLOAD_MAP.put(FLOWABLE_STARTUP_NODE_MODIFY_RAISE_DATE_NOTICE, "募集公告修改");
        FLOWABLE_STARTUP_DOC_UPLOAD_MAP.put(FLOWABLE_STARTUP_NODE_PREPARE_REGISTER, "信披备案准备");
        FLOWABLE_STARTUP_DOC_UPLOAD_MAP.put(FLOWABLE_STARTUP_NODE_MODIFY_FINISH_REGISTER, "信披备案完成");
        FLOWABLE_STARTUP_DOC_UPLOAD_MAP.put(FLOWABLE_STARTUP_NODE_INVESTOR_CHECK, "投资者穿透");
        FLOWABLE_STARTUP_DOC_UPLOAD_MAP.put(FLOWABLE_STARTUP_NODE_SALE_CONTRACT, "上传代销协议");
        FLOWABLE_STARTUP_DOC_UPLOAD_MAP.put(FLOWABLE_STARTUP_NODE_ARCHIVE, "用印材料归档");
    }

    //投顾产品新设附件上传各节点，按节点排序
    public static Map<String, String> FLOWABLE_INV_STARTUP_DOC_UPLOAD_MAP = new LinkedHashMap<>();
    static {
        FLOWABLE_INV_STARTUP_DOC_UPLOAD_MAP.put(FLOWABLE_STARTUP_INV_NODE_SALE_CONTRACT, "上传投顾协议");
    }

    public static String FLOWABLE_STARTUP_AUDIT_TYPE_PASS = "1"; //审核通过
    public static String FLOWABLE_STARTUP_AUDIT_TYPE_REJECT = "2"; //审核拒绝
    public static String FLOWABLE_STARTUP_AUDIT_TYPE_ROLLBACK = "3"; //退回
    /*
     * 产品新设流程查看状态 am_flowable_handle_mode
     * */
    public final static String FLOWABLE_HANDLE_MODE_VIEW ="VIEW";
    public final static String FLOWABLE_HANDLE_MODE_EDIT ="EDIT";

    /**
     * 开放期确认工作流状态，节点及对应处理人角色，多个角色可审核则逗号分割
     */
    public static HashMap<String, String> FLOWABLE_STARTUP_NODE_MAP = new HashMap<>();

    static {
        FLOWABLE_STARTUP_NODE_MAP.put(FLOWABLE_STARTUP_NODE_BEGIN, "");
        FLOWABLE_STARTUP_NODE_MAP.put(FLOWABLE_STARTUP_NODE_START, "");
        FLOWABLE_STARTUP_NODE_MAP.put(FLOWABLE_STARTUP_NODE_BASIC_PARAM, "");
        FLOWABLE_STARTUP_NODE_MAP.put(FLOWABLE_STARTUP_NODE_BASIC_PARAM_AUDIT, "");
        FLOWABLE_STARTUP_NODE_MAP.put(FLOWABLE_STARTUP_NODE_BEFORE_COLLECT, "");
        FLOWABLE_STARTUP_NODE_MAP.put(FLOWABLE_STARTUP_NODE_BEFORE_RAISE_END, "");
        FLOWABLE_STARTUP_NODE_MAP.put(FLOWABLE_STARTUP_NODE_SETUP, "");
        FLOWABLE_STARTUP_NODE_MAP.put(FLOWABLE_STARTUP_NODE_ARCHIVE, "");
    }


    /**
     * am_audit_table_audit_status
     */
    public static final String AUDIT_TABLE_AUDIT_STATUS_NEED = "1";
    public static final String AUDIT_TABLE_AUDIT_STATUS_FINISH = "2";
    public static final String AUDIT_TABLE_AUDIT_STATUS_DELETED = "3";

    /**
     * 账户开立可选交易品种 字典：am_trade_account_class
     */
    public static final String TRADE_ACCOUNT_CLASS_SECURITY_ACCOUNT = "6";
    public static final String TRADE_ACCOUNT_CLASS_CUSTODY = "1";//托管账户

    /*
     * 字典：销售机构类型 am_sale_agency_type
     * */
    public static final String DICT_CODE_SALE_AGENCY_TYPE = "am_sale_agency_type";
    public static final String DICT_CODE_SALE_AGENCY_TYPE_DIRECT = "1";//直销
    public static final String DICT_CODE_SALE_AGENCY_TYPE_AGENT = "2";//代销

    /**
     * 字典：销售机构类型 am_sale_agency_ta_type
     */
    public static final String DICT_CODE_SALE_AGENCY_TA_TYPE_NONE = "0"; //无
    public static final String DICT_CODE_SALE_AGENCY_TA_TYPE_TA = "1"; //自TA
    public static final String DICT_CODE_SALE_AGENCY_TA_TYPE_SUBTA = "2"; //分TA
    public static final String DICT_CODE_SALE_AGENCY_TA_TYPE_ALL = "3"; //全有

    /**
     * 字典：产品销售方式 am_sale_agency_method
     */
    public static final String DICT_CODE_SALE_AGENCY_METHOD_DIRECT = "1";//直销
    public static final String DICT_CODE_SALE_AGENCY_METHOD_AGENT = "2";//代销
    public static final String DICT_CODE_SALE_AGENCY_METHOD_NONE = "9";//无

    /**
     * 附件自动上传档案系统状态 字典：am_doc_upload_flag
     */
    public static final String DOC_UPLOAD_FLAG_NO_OA_PROD = "1"; //1-未找到OA对应产品
    public static final String DOC_UPLOAD_FLAG_SUCCESS = "2"; //2-上传文件成功
    public static final String DOC_UPLOAD_FLAG_FAIL = "3"; //3-上传文件失败


    /**
     * 销售机构直销、代销类型 字典：am_sale_agency_type
     */
    public static final String SALE_AGENCY_TYPE_DIRECT = "1"; //直销
    public static final String SALE_AGENCY_TYPE_AGENT = "2"; //代销
    public static final String SALE_AGENCY_TYPE_NONE = "9"; //无

    /**
     * 信披模式，字典 am_disclose_type
     */
    public static final String DISCLOSE_TYPE_HOLDER = "A"; //持有人
    public static final String DISCLOSE_TYPE_ELIG_INVESTOR = "B"; //合格投资者

    /**
     * 托管账户状态，字典 am_custody_account_status
     */
    public static final String CUSTODY_ACCOUNT_STATUS_NORMAL = "1"; //正常
    public static final String CUSTODY_ACCOUNT_STATUS_CANCEL = "2"; //注销
    public static final String CUSTODY_ACCOUNT_STATUS_FREEZE = "3"; //冻结

    /**
     * 已办事项类型，字典 am_todo_type
     */
    public static final String TODO_TYPE_CARRY = "CARRY_REMIND";
    public static final String TODO_TYPE_OPEN_DAY = "OPEN_DAY_REMIND";
    public static final String TODO_TYPE_INVEST_WORKFLOW = "INVEST_WORK_FLOW_REMIND";
    public static final String TODO_TYPE_MANAGE_CUSTODY_FEE = "FEE_REMIND";
    public static final String TODO_TYPE_ACCOUNT_OPEN = "ACCOUNT_OPEN_WORKFLOW_NODE";
    public static final String TODO_TYPE_ACCOUNT_MAINTAIN = "ACCOUNT_MAINTAIN_REMIND";
    public static final String TODO_TYPE_PRODUCT_MAINTAIN = "PRODUCT_MAINTAIN_REMIND";

    /**
     * 产品模板类型 字典：am_template_type
     */
    public static final String TEMPLATE_TYPE_PROD_TYPE = "1"; //产品类型模板
    public static final String TEMPLATE_TYPE_PROD_INFO = "2"; //产品信息模板

    public static final String PRODUCT_RELATION_FIELD_PRODUCT_MANAGER = "productManager";//产品经理;
    public static final String PRODUCT_RELATION_FIELD_INVEST_MANAGER = "investManager";//投资经理;
    public static final String PRODUCT_RELATION_FIELD_INVEST_ASSISTANT = "investAssistant";   //投资助理
    public static final String PRODUCT_RELATION_FIELD_MARKET_MANAGER = "marketManager";//市场经理
    public static final String PRODUCT_RELATION_FIELD_OPERATION_MANAGER = "operationManager";//运营经理

    /**
     * 产品关联经理对应MAP
     */
    public static HashMap<String, String> PRODUCT_RELATION_MANAGER_MAP = new HashMap<>();

    static {
        PRODUCT_RELATION_MANAGER_MAP.put(PRODUCT_RELATION_FIELD_PRODUCT_MANAGER, PRODUCT_RELATION_PRODUCT_MANAGER);
        PRODUCT_RELATION_MANAGER_MAP.put(PRODUCT_RELATION_FIELD_INVEST_MANAGER, PRODUCT_RELATION_INVEST_MANAGER);
        PRODUCT_RELATION_MANAGER_MAP.put(PRODUCT_RELATION_FIELD_INVEST_ASSISTANT, PRODUCT_RELATION_INVEST_ASSISTANT);
        PRODUCT_RELATION_MANAGER_MAP.put(PRODUCT_RELATION_FIELD_MARKET_MANAGER, PRODUCT_RELATION_MARKET_MANAGER);
        PRODUCT_RELATION_MANAGER_MAP.put(PRODUCT_RELATION_FIELD_OPERATION_MANAGER, PRODUCT_RELATION_OPERATION_MANAGER);
    }

    /**
     * 信披来源，字典 am_disclosure_source
     */
    public static final String DISCLOSURE_SOURCE_OPENDAY_MONTH_TODO = "1"; //开放期流程
    public static final String DISCLOSURE_SOURCE_PROD_STARTUP_PROCESS = "2"; //新设流程
    public static final String DISCLOSURE_SOURCE_OTHER = "3"; //其他的事件类型

    /**
     * 信披来源，字典 am_city_level
     */
    public static final String CITY_LEVEL_PROVINCE = "1"; //省
    public static final String CITY_LEVEL_CITY = "2"; //地市
    public static final String CITY_LEVEL_COUNTY = "3"; //区县

    /**
     * 产品生命周期管理产品子阶段，字典 am_oa_product_substage
     */
    public static final String OA_PRODUCT_SUBSTAGE_REVIEW = "10010"; //评审过会
    public static final String OA_PRODUCT_SUBSTAGE_FINAL_CONTRACT_UPLOAD = "10030"; //定稿合同上传
    public static final String OA_PRODUCT_SUBSTAGE_PORD_STARTUP = "10040"; //创设申请
    public static final String OA_PRODUCT_SUBSTAGE_BASE_INFO = "20010"; //基本信息维护
    public static final String OA_PRODUCT_SUBSTAGE_ISSUE_COLLECT = "20020"; //发行与募集
    public static final String OA_PRODUCT_SUBSTAGE_E_CONTRACT = "20030"; //电子合同配置
    public static final String OA_PRODUCT_SUBSTAGE_DISCLOSURE = "20040"; //网站信息披露
    public static final String OA_PRODUCT_SUBSTAGE_O32 = "20050"; //O32新基金维护&风控阈值调整
    public static final String OA_PRODUCT_SUBSTAGE_REGISTER = "20060"; //基协备案
    public static final String OA_PRODUCT_SUBSTAGE_CAPITAL = "20070"; //验资成立
    public static final String OA_PRODUCT_OPENRULE = "30010"; //固定开放期设置
    public static final String OA_PRODUCT_TEMP_OPENRULE = "30020"; //临时开放申请
    public static final String OA_PRODUCT_INVEST_MANAGER = "30100"; //投资经理变更
    public static final String OA_PRODUCT_ACCOUNT_END = "40020"; //账户销户

    /**
     * 生命周期总览页面类型，字典 am_request_type
     */
    public static final String REQUEST_TYPE_ACCOUNT_PAGE = "10"; //产品账户开立流程页面
    public static final String REQUEST_TYPE_FLOWABLE_PAGE = "20"; //产品新设Flowable流程页面
    public static final String REQUEST_TYPE_OPENRULE_PAGE = "30"; //产品固定开放期设置页面
    public static final String REQUEST_TYPE_OPENRULE_TEMP_PAGE = "40"; //产品临时开放申请页面
    public static final String REQUEST_TYPE_ACCOUNT_END_PAGE = "50"; //产品账户销户页面

    /**
     * 资管产品结算模式，字典 am_settle_mode
     */
    public static final String SETTLE_MODE_SECURITY = "1"; //券商结算
    public static final String SETTLE_MODE_BANK = "2"; //银行结算

    /**
     * 交易单元性质，字典 am_trade_seat_type
     */
    public static final String TRADE_SEAT_TYPE_COMMON = "1"; //普通
    public static final String TRADE_SEAT_TYPE_CREDIT = "2"; //信用


    /*
     * 产品终止流程节点状态
     * */
    public static String FLOWABLE_PROD_END_NODE_CONFIRM = "qrzzTask";//name="确认产品终止"
    public static String FLOWABLE_PROD_END_NODE_END_NOTICE = "sczzTask";//name="终止公告上传
    public static String FLOWABLE_PROD_END_NODE_END_FLOW = "xjzzTask";// name="衔接终止流程"
    public static String FLOWABLE_PROD_END_NODE_THRESHOLD = "yztzTask";//  name="发起阈值调整
    public static String FLOWABLE_PROD_END_NODE_AUDIT_NOTICE = "shzzggTask";// name="审核终止公告等事项"
    public static String FLOWABLE_PROD_END_NODE_DISCLOSE = "plggTask";//name="披露公告
    public static String FLOWABLE_PROD_END_NODE_CLEAR_PERSON = "zdqsTask";// name="指定清算负责人"
    public static String FLOWABLE_PROD_END_NODE_INTERBANK_END = "yhjxhTask";// name="银行间账户销户
    public static String FLOWABLE_PROD_END_INVEST_MANAGER_CONFIRM = "zdyyjlTask";//投资经理确认
    public static String FLOWABLE_PROD_END_ACCOUNT_END = "xhjdTask";//各销户节点
    public static String FLOWABLE_PROD_END_CUSTODY_INTEREST_CLEAR = "xhjxTask";// "托管户销户结息"
    public static String FLOWABLE_PROD_END_CUSTODY_ACCOUNT_AMOUNT_TRANSFER = "kxhfTask";//"款项划付"
    public static String FLOWABLE_PROD_END_FA_END_TASK = "clqsTask";//FA 处理清算事宜
    public static String FLOWABLE_PROD_END_REPORT = "qsbgTask";//清算报告节点
    public static String FLOWABLE_PROD_END_CUSTODY_CONFIRM_REPORT = "qrbgTask";//委托人确认清算报告
    public static String FLOWABLE_PROD_END_CUSTODY_CONFIRM = "wtryyTask";//委托人确认节点

    public static String FLOWABLE_PROD_END_ACCOUNT_BROKER = "xhzjhTask";//销户-资金账户
    public static String FLOWABLE_PROD_END_ACCOUNT_SECURITIES = "xhzqhTask";//销户-证券账户
    public static String FLOWABLE_PROD_END_ACCOUNT_FUND = "xhjjhTask";//销户-基金账户
    public static String FLOWABLE_PROD_END_ACCOUNT_FUTURE = "xhqhhTask";//销户-期货账户
    public static String FLOWABLE_PROD_END_ACCOUNT_BEIJIAO = "xhbjsTask";//销户-北交所账户
    public static String FLOWABLE_PROD_END_ACCOUNT_OTHER = "xhqthTask";//销户-其它类账户

    /*
     * 开放期确认流程节点状态
     * */
    public static String FLOWABLE_OPEN_DAY_CONFIRM_START = "beginTask"; //发起
    public static String FLOWABLE_OPEN_DAY_CONFIRM_INVEST_MANAGER = "investManagerTask"; //投资经理
    public static String FLOWABLE_OPEN_DAY_CONFIRM_FA = "fatask"; //FA
    public static String FLOWABLE_OPEN_DAY_CONFIRM_TA = "taTask"; //TA
    public static String FLOWABLE_OPEN_DAY_CONFIRM_MAKE_NOTICE = "makeNoticeTask"; //拟定公告
    public static String FLOWABLE_OPEN_DAY_CONFIRM_COMPLIANCE = "complianceAuditTask"; //合规审核
    public static String FLOWABLE_OPEN_DAY_CONFIRM_DISCLOSE_NOTICE = "discloseNoticeTask"; //信息披露
    public static String FLOWABLE_OPEN_DAY_CONFIRM_AUDIT_DIVIDEND = "auditDividendNoticeTask"; //审核收益分配公告
    public static String FLOWABLE_OPEN_DAY_TA_DIVIDEND = "taDividendTask"; //TA收益分配
    public static String FLOWABLE_OPEN_DAY_MAKE_DIVIDEND_NOTICE = "makeDividendNoticeTask"; //拟定收益分配公告
    public static String FLOWABLE_OPEN_DAY_PUBLISH_DIVIDEND_NOTICE = "publishDividendNoticeTask"; //"收益分配公告发布"

    /*
     * ABS划款流程节点状态
     * */
    public static String FLOWABLE_ABS_TRANSFER_START = "beginTask"; //发起
    public static String FLOWABLE_ABS_TRANSFER_VALUE_CAPITAL = "valueCapitalTask"; //估值资金岗


    /*
     * 销售机构维护流程节点状态
     * */
    public static String FLOWABLE_SALE_AGENCY_START = "beginTask"; //发起
    public static String FLOWABLE_SALE_AGENCY_OPERATION_DIRECTOR = "operationDirectorTask"; //运营团队负责人
    public static String FLOWABLE_SALE_AGENCY_TA_BEFORE = "taBeforeTask"; //运管TA组
    public static String FLOWABLE_SALE_AGENCY_CREATOR_AUDIT = "creatorAuditTask"; //发起人审批
    public static String FLOWABLE_SALE_AGENCY_TA = "taTask"; //运管TA组
    public static String FLOWABLE_SALE_AGENCY_COMPLIANCE = "complianceAuditTask"; //合规岗
    public static String FLOWABLE_SALE_AGENCY_CREATOR_CONFIRM = "creatorConfirmTask"; //发起人确认


    /**
     * 信披来源，字典 am_sale_agency_test_type
     */
    public static final String SALE_AGENCY_TEST_TYPE_YES = "1"; //测试
    public static final String SALE_AGENCY_TEST_TYPE_NO = "2"; //免测试
    public static final String SALE_AGENCY_TEST_TYPE_HAS_SAME = "3"; //已上线同类产品


    /*
     * 销售机构维护流程-产品销售机构关系操作： 0接入 1修改 2下架
     * */
    public static final Integer OP_SALE_AGENCY_ADD = 0; //接入
    public static final Integer OP_SALE_AGENCY_MODIFY = 1; //修改
    public static final Integer OP_SALE_AGENCY_EXIT = 2; //下架


    /*
     * 产品终止流程节点状态
     * */
    public static String DICT_CODE_PROCESS_DEFINE_KEY = "am_flowable_processdefinekey";//flowable业务工作流列表



    /**
     * 产品生命周期之产品阶段，字典： am_oa_product_stage
     */
    public static final String DICT_CODE_PRODUCT_STAGE = "am_oa_product_stage";

    /**
     * 产品生命周期之产品子阶段，字典： am_prod_doc_type
     */
    public static final String DICT_CODE_PRODUCT_SUBSTAGE = "am_oa_product_substage"; //

    public static final String DISCLOSURE_PROD_CENTER_CATEGORY_ID_REPORT = "28";// "定期报告";

    /**
     * 是否具体产品相关资料
     */
    public static final String IS_DETAIL_PRODUCT_NO = "1"; //否

    /**
     * 交易单元状态，字典 am_trade_seat_state
     */
    public static final String TRADE_SEAT_STATE_BEGIN = "1"; //已开通
    public static final String TRADE_SEAT_STATE_END = "0"; //停用

    /**
     * 交易单元数据来源，字典 am_trade_seat_source
     */
    public static final String TRADE_SEAT_SOURCE_MANU = "1"; //手工
    public static final String TRADE_SEAT_SOURCE_AUTO = "2"; //自动

    /**
     * 交易单元费用是否分摊
     */
    public static final String IS_EXPENCE_YES = "0"; //是
    public static final String IS_EXPENCE_NO = "1"; //否


    /**
     * 交易单元状态
     */
    public static final String DICT_CODE_TRADE_SEAT_STATE = "am_trade_seat_state";

    /**
     * 交易单元市场
     */
    public static final String DICT_CODE_TRADE_SEAT_MARKET = "am_trade_seat_market";

    /**
     * 交易单元类型
     */
    public static final String DICT_CODE_TRADE_SEAT_USE_TYPE = "am_trade_seat_use_type";


    /**
     * 交易商代码		，字典： am_trans_merchant_code
     */
    public static final String DICT_CODE_TRANS_MERCHANT_CODE = "am_trans_merchant_code";
    /**
     * 交易主体类型		    ，字典： am_trans_sub_type
     */
    public static final String DICT_CODE_TRANS_SUB_TYPE = "am_trans_sub_type";

    /**
     * 账户多信息类型		，字典： am_account_more_type
     */
    public static final String DICT_CODE_ACCOUNT_MORE_TYPE = "am_account_more_type";

    /**
     * 账户多信息类型		    ，字典： am_account_more_type
     */
    public static final String ACCOUNT_MORE_TYPE_BUY_BASE_ASSET = "BUYBASEASSET";//购买基础资产的账户
    public static final String ACCOUNT_MORE_TYPE_CHINA_CLEAR_ASSIGN = "CHINACLEARASSIGN";//中登指定的账户
    public static final String ACCOUNT_MORE_TYPE_HOLDER = "HOLDER";//持有人账户
    public static final String ACCOUNT_MORE_TYPE_EXCESS_FUND = "EXCESSFUND";//超额资金划转、支付次级收益划款账户
    public static final String ACCOUNT_MORE_TYPE_ASSET_ORG_SERVICE_FEE = "ASSETORGSERVICFEE";//资产机构服务费账户
    public static final String ACCOUNT_MORE_TYPE_VERIFICATION_FEE_REFUND = "VERIFICATIONFEEREFUND";//验资费垫付返还、初始登记费返还账户
    public static final String ACCOUNT_MORE_TYPE_LAWYER_FEE = "LAWYERFEE";//律师费账户
    public static final String ACCOUNT_MORE_TYPE_AUDIT_FEE = "AUDITFEE";//审计费账户
    public static final String ACCOUNT_MORE_TYPE_INIT_SIGN_FEE = "INITSIGNFEE";//初始登记费账户
    public static final String ACCOUNT_MORE_TYPE_VERIFICATION_FEE = "VERIFICATIONFEE";//验资费账户
    public static final String ACCOUNT_MORE_TYPE_SECONDARY_BUY_CLOSE_RATE = "SECONDARYBUYCLOSERATE";//次级认购人销户结息账户
    public static final String ACCOUNT_MORE_TYPE_CYCLE_BUY_ORIGINAL_OWNER = "CYCLEBUYORIGINALOWNER";//循环购买原始权益人账户
    public static final String ACCOUNT_MORE_TYPE_SALE_FEE = "SALEFEE";//销售费账户
    public static final String ACCOUNT_MORE_TYPE_RATING_FEE = "RATINGFEE";//评级费账户

    /**
     * 账户多信息类型文档类型列表对应MAP
     */
    public static Map<String, List<String>> ACCOUNT_MORE_TYPE_DOC_TYPE_LIST_MAP = new HashMap();
    static {
        ACCOUNT_MORE_TYPE_DOC_TYPE_LIST_MAP.put(ACCOUNT_MORE_TYPE_BUY_BASE_ASSET, Arrays.asList(PROD_DOC_TYPE_BUY_BASE_ASSET));
        ACCOUNT_MORE_TYPE_DOC_TYPE_LIST_MAP.put(ACCOUNT_MORE_TYPE_CHINA_CLEAR_ASSIGN, Arrays.asList(PROD_DOC_TYPE_CHINA_CLEAR_ASSIGN));
        ACCOUNT_MORE_TYPE_DOC_TYPE_LIST_MAP.put(ACCOUNT_MORE_TYPE_HOLDER, Arrays.asList(PROD_DOC_TYPE_HOLDER));
        ACCOUNT_MORE_TYPE_DOC_TYPE_LIST_MAP.put(ACCOUNT_MORE_TYPE_EXCESS_FUND, Arrays.asList(PROD_DOC_TYPE_EXCESS_FUND));
        ACCOUNT_MORE_TYPE_DOC_TYPE_LIST_MAP.put(ACCOUNT_MORE_TYPE_ASSET_ORG_SERVICE_FEE, Arrays.asList(PROD_DOC_TYPE_ASSET_ORG_SERVICE_FEE));
        ACCOUNT_MORE_TYPE_DOC_TYPE_LIST_MAP.put(ACCOUNT_MORE_TYPE_VERIFICATION_FEE_REFUND, Arrays.asList(PROD_DOC_TYPE_VERIFICATION_FEE_REFUND));
        ACCOUNT_MORE_TYPE_DOC_TYPE_LIST_MAP.put(ACCOUNT_MORE_TYPE_LAWYER_FEE, Arrays.asList(PROD_DOC_TYPE_LAWYER_FEE));
        ACCOUNT_MORE_TYPE_DOC_TYPE_LIST_MAP.put(ACCOUNT_MORE_TYPE_AUDIT_FEE, Arrays.asList(PROD_DOC_TYPE_AUDIT_FEE));
        ACCOUNT_MORE_TYPE_DOC_TYPE_LIST_MAP.put(ACCOUNT_MORE_TYPE_INIT_SIGN_FEE, Arrays.asList(PROD_DOC_TYPE_INIT_SIGN_FEE));
        ACCOUNT_MORE_TYPE_DOC_TYPE_LIST_MAP.put(ACCOUNT_MORE_TYPE_VERIFICATION_FEE, Arrays.asList(PROD_DOC_TYPE_VERIFICATION_FEE));
        ACCOUNT_MORE_TYPE_DOC_TYPE_LIST_MAP.put(ACCOUNT_MORE_TYPE_SECONDARY_BUY_CLOSE_RATE, Arrays.asList(PROD_DOC_TYPE_SECONDARY_BUY_CLOSE_RATE));
        ACCOUNT_MORE_TYPE_DOC_TYPE_LIST_MAP.put(ACCOUNT_MORE_TYPE_CYCLE_BUY_ORIGINAL_OWNER, Arrays.asList(PROD_DOC_TYPE_CYCLE_BUY_ORIGINAL_OWNER));
        ACCOUNT_MORE_TYPE_DOC_TYPE_LIST_MAP.put(ACCOUNT_MORE_TYPE_SALE_FEE, Arrays.asList(PROD_DOC_TYPE_SALE_FEE));
        ACCOUNT_MORE_TYPE_DOC_TYPE_LIST_MAP.put(ACCOUNT_MORE_TYPE_RATING_FEE, Arrays.asList(PROD_DOC_TYPE_RATING_FEE));
    }

    public static final String AMOUNT_IDEN_FUND_SET_UP_A_DIVISION = "FUND_SET_UP_A_DIVISION";//基金成立划款
    public static final String AMOUNT_IDEN_VENDOR_SUBSCRIPTION = "VENDOR_SUBSCRIPTION";//销售商认购款
    public static final String AMOUNT_IDEN_SELLERS_SUBSCRIPTION = "SELLERS_SUBSCRIPTION";//销售商申购款
    public static final String AMOUNT_IDEN_CUSTODIAN_BANK_SUBSCRIPTION = "CUSTODIAN_BANK_SUBSCRIPTION";//托管行申购款
    public static final String AMOUNT_IDEN_SELLERS_REDEMPTION = "SELLERS_REDEMPTION";//销售商赎回款
    public static final String AMOUNT_IDEN_SELLER_TERMINATION_OF_REFUND = "SELLER_TERMINATION_OF_REFUND";//销售商终止退款
    public static final String AMOUNT_IDEN_THE_CUSTODIAN_BANK_REDEEMS_THE_MONEY = "THE_CUSTODIAN_BANK_REDEEMS_THE_MONEY";//托管行赎回款
    public static final String AMOUNT_IDEN_ESCROW_BANK_TERMINATES_REFUND = "ESCROW_BANK_TERMINATES_REFUND";//托管行终止退款
    public static final String AMOUNT_IDEN_SELLER_CASH_BONUS = "SELLER_CASH_BONUS";//销售商现金分红
    public static final String AMOUNT_IDEN_CUSTODIAN_BANK_DIVIDEND = "CUSTODIAN_BANK_DIVIDEND";//托管行分红
    public static final String AMOUNT_IDEN_SELLER_BONUS_UNFREEZING = "SELLER_BONUS_UNFREEZING";//销售商红利解冻

    public static Map<String, String> AMOUNT_IDENTIFICATION_MAP = new LinkedHashMap<>();

    static {
       AMOUNT_IDENTIFICATION_MAP.put(AMOUNT_IDEN_FUND_SET_UP_A_DIVISION,"基金成立划款");
       AMOUNT_IDENTIFICATION_MAP.put(AMOUNT_IDEN_VENDOR_SUBSCRIPTION,"销售商认购款");
       AMOUNT_IDENTIFICATION_MAP.put(AMOUNT_IDEN_SELLERS_SUBSCRIPTION,"销售商申购款");
       AMOUNT_IDENTIFICATION_MAP.put(AMOUNT_IDEN_CUSTODIAN_BANK_SUBSCRIPTION,"托管行申购款");
       AMOUNT_IDENTIFICATION_MAP.put(AMOUNT_IDEN_SELLERS_REDEMPTION,"销售商赎回款");
       AMOUNT_IDENTIFICATION_MAP.put(AMOUNT_IDEN_SELLER_TERMINATION_OF_REFUND,"销售商终止退款");
       AMOUNT_IDENTIFICATION_MAP.put(AMOUNT_IDEN_THE_CUSTODIAN_BANK_REDEEMS_THE_MONEY,"托管行赎回款");
       AMOUNT_IDENTIFICATION_MAP.put(AMOUNT_IDEN_ESCROW_BANK_TERMINATES_REFUND,"托管行终止退款");
       AMOUNT_IDENTIFICATION_MAP.put(AMOUNT_IDEN_SELLER_CASH_BONUS,"销售商现金分红");
       AMOUNT_IDENTIFICATION_MAP.put(AMOUNT_IDEN_CUSTODIAN_BANK_DIVIDEND,"托管行分红");
       AMOUNT_IDENTIFICATION_MAP.put(AMOUNT_IDEN_SELLER_BONUS_UNFREEZING,"销售商红利解冻");
    }


    public static final String DICT_AM_DAY_TYPE_RAISE_START = "2";//募集开始日
    public static final String DICT_AM_DAY_TYPE_RAISE_END = "3";//募集结束日
    public static final String DICT_AM_DAY_TYPE_RAISE_ESTABLISH = "1";//募集成立日
    public static final String EXCEL_RUYI_TABLE = "congruyi_start_param_template.xlsx";//琮如意，创设参数表
    public static final String EXCEL_PARAM_4_WEALTH_TABLE = "产品参数表-to财富模板.xlsx";

    public static final String EXCEL_PARAM_WEALTH_TABLE = "产品参数表-to财富.xlsx";
    public static Map<String, String> DICT_AM_DAY_TYPE_MAP = new HashMap();

    static {
        DICT_AM_DAY_TYPE_MAP.put(DICT_AM_DAY_TYPE_RAISE_START, "募集开始日");
        DICT_AM_DAY_TYPE_MAP.put(DICT_AM_DAY_TYPE_RAISE_END, "募集结束日");
        DICT_AM_DAY_TYPE_MAP.put(DICT_AM_DAY_TYPE_RAISE_ESTABLISH, "募集成立日");
    }

    /**
     * 资管投资策略		，字典： am_prod_invest_strategy
     */
    public static final String DICT_CODE_PROD_INVEST_STRATEGY = "am_prod_invest_strategy";


    /**
     * 产品中心系统销售控制串
     */
    public static final String DICT_CODE_PROD_CENTER_SALE_CTRL_STR = "prodcenter_prod_sale_ctrlstr";

    /**
     * O32角色权限字典相关信息
     */
    public static final String SPECIAL_ACCOUNT_YZ = "yz";
    public static final String SPECIAL_ACCOUNT_WEICJ = "weicj";
    public static final String SPECIAL_ACCOUNT_JIANGSJ = "jiangsj";
    public static final String SPECIAL_ACCOUNT_LIUSX = "liusx";
    public static final String SPECIAL_ACCOUNT_LIUSX_O32ID = "5021";

    public static final String DICT_CODE_O32_ROLE = "am_o32_role_code";

    public static final String DICT_O32_ROLE_VALUE_ACCOUNT = "10"; //资管估值核算岗
    public static final String DICT_O32_ROLE_TRADER = "12"; //资管交易员
    public static final String DICT_O32_ROLE_RISK_CONTROL = "14"; //资管风控人员
    public static final String DICT_O32_ROLE_INVEST_DIRECTOR = "16"; //资管投资总监
    public static final String DICT_O32_ROLE_OPERATOR = "18"; //资管运营岗
    public static final String DICT_O32_ROLE_INVEST_MANAGER = "20"; //资管投资经理
    public static final String DICT_O32_ROLE_INVEST_ASSISTANT = "22"; //资管投资助理
    public static final String DICT_O32_ROLE_INVEST_CONSULTANT = "24"; //投资顾问

    public static final List<String> INVEST_ROLE = ImmutableList.of(DICT_O32_ROLE_INVEST_MANAGER,DICT_O32_ROLE_INVEST_ASSISTANT);

    //风控团队名称
    public static final String USER_DEPARTMENT_RISK_CONTROL = "资产管理部/风控团队";

    //锁定期单位
    public static final String LOCK_UNIT_DAY = "1";//日
    public static final String LOCK_UNIT_MONTH = "2";//月
    public static final String LOCK_UNIT_YEAR = "3";//年
    //校验锁定期开关
    public static final String INVEST_TRANSFER_WITHDRAWAL_LOCK_OPEN = "INVEST_TRANSFER_WITHDRAWAL_LOCK_OPEN";
    public static final String LOCK_IN = "申购";
    public static final String LOCK_OUT = "赎回";

    /**
     * 产品关联信息类型，字典 am_prod_relation_type
     */
    public static final String PROD_RELATION_TYPE_DIGITAL_KET_CUSTODIAN = "DIGITAL_KET_CUSTODIAN"; //数字证书保管人

    //产品次日开放日文件邮件提醒, 是否给运营经理和汤敏兰发送的开关
    public static final String SPECIAL_TA_STATUS_REMIND_OPEN = "SPECIAL_TA_STATUS_REMIND_OPEN";


    /**
     * OA流程类型定义，字典：字典：am_prod_oa_workflow
     */

    public static final String DICT_CODE_OA_WORKFLOW = "am_prod_oa_workflow";

    public static final String PROD_OA_WORKFLOW_PRE_PROJECT = "1000007";//资管业务预立项
    public static final String PROD_OA_WORKFLOW_REVIEW = "1000004";//国联证券资管产品评审流程
    public static final String PROD_OA_WORKFLOW_NON_STARTUP_MATTER = "1000020";//6.产品委评审流程（非产品筹设事项）

    public static final String JOB_CONTROL_TOKEN = "JOB_CONTROL_TOKEN";
    /**
     * dolphin传入jobType的类型
     */
    public static final String JOB_WORK_FLOW_RELATION_SYNC = "JOB_WORK_FLOW_RELATION_SYNC";
    public static final String JOB_NOTIFY_TIME_END_LICENSE = "JOB_NOTIFY_TIME_END_LICENSE";
    public static final String JOB_SYNC_OA_USER = "JOB_SYNC_OA_USER";

    public static Map<String,String> JOB_NAME_MAP =new HashMap();
    static{
        JOB_NAME_MAP.put(JOB_WORK_FLOW_RELATION_SYNC,"OA工作流关系同步");
        JOB_NAME_MAP.put(JOB_NOTIFY_TIME_END_LICENSE,"LICENSE到期提醒");
        JOB_NAME_MAP.put(JOB_SYNC_OA_USER,"网关同步OA用户");
    }

    public static final String WECHAT_MSG_GROUP = "产品系统需求通知";//消息体需要的字段

    public static final DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");

    public static Map<String, String> FLOWABLE_PROD_END_ACCOUNT_COMMENT_MAP = new LinkedHashMap<>();

    static {
        FLOWABLE_PROD_END_ACCOUNT_COMMENT_MAP.put(FLOWABLE_PROD_END_ACCOUNT_BROKER,"销户-资金账户");
        FLOWABLE_PROD_END_ACCOUNT_COMMENT_MAP.put(FLOWABLE_PROD_END_ACCOUNT_SECURITIES,"销户-证券账户");
        FLOWABLE_PROD_END_ACCOUNT_COMMENT_MAP.put(FLOWABLE_PROD_END_ACCOUNT_FUND,"销户-基金账户");
        FLOWABLE_PROD_END_ACCOUNT_COMMENT_MAP.put(FLOWABLE_PROD_END_ACCOUNT_FUTURE,"销户-期货账户");
    }

    public static final String DOMAIN_TYPE_CNAME = "3";
    public static final String DOMAIN_NAME_SERVER_无锡电信 = "无锡电信";

    /**
     * 与oa流程关联
     */
    public static final String OA_MAIN_URL = "OA_MAIN_URL"; //oamainurl
    public static final String OA_FLOW_VIEW_URL = "OA_FLOW_VIEW_URL"; //oaflowviewurl
}
